是否可以保持“IN”条件子句的顺序?
I found 这个问题 https://stackoverflow.com/questions/8054511/sql-is-results-order-mapped-to-values-in-in-expression在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
...
我更相信前一种方法,而且它的效果可能会好得多。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)