sql – 保持从’IN’子句的顺序

前端之家收集整理的这篇文章主要介绍了sql – 保持从’IN’子句的顺序前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
有条件的条件可以保留订单吗?

我在SO上找到了this question,但在他的例子中,OP已经有一个排序的“IN”子句.

我的情况是不同的,’IN’子句是随机
这样的东西

SELECT SomeField,OtherField
FROM TestResult 
WHERE TestResult.SomeField IN (45,2,445,12,789)

我想在(45,789)订单中检索结果.我使用的是Oracle数据库.也许在sql中有一个属性我可以使用条件子句来指定以保持子句的顺序.

解决方法

除非您使用ORDER BY子句,否则将不会有可靠的排序
SELECT SomeField,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
...

我会相信以前的方法更多,它可能会表现更好.

猜你在找的MsSQL相关文章