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