select HId, TestM, *
from TestDb
where Hid in ( 4, 5, 7, 9, 1, 132, 312)
Run Code Online (Sandbox Code Playgroud)
如果我运行上面的.sql文件,默认情况下第一列将按升序排序.
我确实希望Hid列按照where子句中的值的顺序排列.我怎样才能做到这一点?
Hid | TestM | ...
_______________
4
5
7
9
1
132
312
Run Code Online (Sandbox Code Playgroud)
您必须CASE在ORDER BY子句中使用表达式:
SELECT HId, TestM, *
FROM TestDb
WHEN Hid IN ( 4, 5, 7, 9, 1, 132, 312)
ORDER BY CASE Hid
WHEN 4 THEN 1
WHEN 5 THEN 2
WHEN 7 THEN 3
WHEN 9 THEN 4
WHEN 1 THEN 5
WHEN 132 THEN 6
WHEN 312 THEN 7
END
Run Code Online (Sandbox Code Playgroud)
另请注意,表只是无序集,因此如果您将该ORDER BY子句保留,则无法保证结果集的顺序.