对特定记录执行SELECT时是否可以维持WHERE子句的顺序?
例如,给定以下SELECT语句:
SELECT [RecSeq] FROM [MyData] WHERE
[RecSeq]=3 OR [RecSeq]=2 OR [RecSeq]=1 OR [RecSeq]=21 OR [RecSeq]=20 OR
[RecSeq]=19 OR [RecSeq]=110 OR [RecSeq]=109 OR [RecSeq]=108 OR
[RecSeq]=53 OR [RecSeq]=52 OR [RecSeq]=51;
我希望结果返回为:
3
2
1
21
20
19
110
109
108
53
53
51
但是,我得到的不是按特定顺序排列的。当前,我有一个循环,它为所需的每个记录调用SELECT语句。范围从1到700,000次。不用说性能不是最好的。
任何解决方案,还是我陷入困境?
最佳答案
您需要ORDER BY FIELD
子句。
SELECT RecSeq From MyData WHERE RecSeq IN (3, 2, 1, 21, 20, 19, 110, 109, 108, 53, 52, 51)
ORDER BY FIELD (RecSeq, 3, 2, 1, 21, 20, 19, 110, 109, 108, 53, 52, 51);
您没有说您正在使用什么数据库系统-我知道这在MySQL中有效。
关于sql - 在SQL Select中维护WHERE顺序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1167858/