SQL ORDER BY(CASE),NEWID()

时间:2013-11-29 02:11:32

标签: sql sql-server tsql sql-server-2005

我有一张如下图所示的表格。我已经有一个代码可以选择所有没有RQID的行,然后是那些有RQID的行。

SELECT * FROM table1 
WHERE moduleexam = 20 
ORDER BY CASE 
WHEN RQID <> '' 
THEN 1 
ELSE 0 
END, NEWID()

enter image description here

查询的工作原理是选择除了那些具有RQID的行以外的所有行。

enter image description here

问题在于具有RQID的行。如何才能使具有相同RQID的两行按顺序排序?

P.S。我正在使用MSSQL Server 2005。

2 个答案:

答案 0 :(得分:1)

ORDER BY CASE ... END, RQID, NEWID();

答案 1 :(得分:1)

尝试

ORDER BY CASE 
WHEN RQID <> '' 
THEN 1 
ELSE 0 
END, RQID, NEWID()

按空/非空排序后,它将按实际RQID排序,然后随机排序。