从表中选择特定记录

abd*_*ikh 3 t-sql sql-server

我有一个sql表如下

Desc   code1   code2   type1  type2
-------------------------------------    
desc1  123     234     T       M
desc2  444     421     T       M
desc3  491     212     T 
desc4  322     211     T
desc5  333     312     T
Run Code Online (Sandbox Code Playgroud)

现在我必须每次选择前两个记录,根据一些条件从剩余的三个记录中选择一个,如何从这个表中首先选择三个记录,第二个和剩下的三个记录...请帮助

Rob*_*Kee 8

SELECT TOP 2 * FROM table ORDER BY (something)
UNION ALL
SELECT TOP 1 * FROM table WHERE (something) (maybe ORDER BY something)
Run Code Online (Sandbox Code Playgroud)

或者如果在前2中你的意思是type2 = M的记录那么:

SELECT TOP 2 * FROM table WHERE type2='M'
UNION ALL
SELECT TOP 1 * FROM table WHERE (something)
Run Code Online (Sandbox Code Playgroud)

或者如果你想要前2名和一些随机的第三名,那么

SELECT TOP 2 * FROM table WHERE type2='M'
UNION ALL
SELECT TOP 1 * FROM table WHERE type2<>'M' ORDER BY NEWID()
Run Code Online (Sandbox Code Playgroud)