是否可以保留“IN”条件子句的顺序?
我在SO上找到了this question,但在他的示例中,OP已经有一个已排序的“IN”子句。
我的情况不同,“IN”子句的顺序随机
像这样的东西:
SELECT SomeField,OtherField
FROM TestResult
WHERE TestResult.SomeField IN (45,2,445,12,789)
我想按(45,2,445,12,789)顺序检索结果。我正在使用Oracle数据库。 SQL中可能有一个属性,我可以将其与条件子句一起使用以指定保持子句的顺序。
最佳答案
除非您使用ORDER BY子句..否则不会有可靠的排序。
SELECT SomeField,OtherField
FROM TestResult
WHERE TestResult.SomeField IN (45,2,445,12,789)
order by case TestResult.SomeField
when 45 then 1
when 2 then 2
when 445 then 3
...
end
您可以将查询分为5个查询并集在一起,尽管...
SELECT SomeField,OtherField
FROM TestResult
WHERE TestResult.SomeField = 4
union all
SELECT SomeField,OtherField
FROM TestResult
WHERE TestResult.SomeField = 2
union all
...
我更相信前一种方法,它可能会更好。