3

我有一个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

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

4

2 回答 2

8
SELECT TOP 2 * FROM table ORDER BY (something)
UNION ALL
SELECT TOP 1 * FROM table WHERE (something) (maybe ORDER BY something)

或者,如果前 2 是指 type2=M 的记录,则:

SELECT TOP 2 * FROM table WHERE type2='M'
UNION ALL
SELECT TOP 1 * FROM table WHERE (something)

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

SELECT TOP 2 * FROM table WHERE type2='M'
UNION ALL
SELECT TOP 1 * FROM table WHERE type2<>'M' ORDER BY NEWID()
于 2013-05-29T05:00:39.747 回答
0
  选择顶部 (2)* 从顶部
  联盟
  选择顶部 (1) * 从顶部 A
  WHERE A.DESC NOT IN (SELECT TOP((SELECT COUNT(*) FROM TOPP)-3) DESC FROM TOPP)

表名 = Topp

于 2013-05-29T06:50:31.727 回答