是否可以保留“ IN”条件子句的顺序?
我在SO上发现了这个问题,但在他的示例中,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 ...
我会更相信前一种方法,并且它可能会执行得更好。