小编典典

保持“ IN”子句的顺序

sql

是否可以保留“ 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中有一个属性,我可以将其与条件子句一起使用以指定保持子句的顺序。


阅读 159

收藏
2021-05-05

共1个答案

小编典典

除非您使用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
...

我会更相信前一种方法,并且它可能会执行得更好。

2021-05-05