加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

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

发布时间:2020-12-12 08:46:58 所属栏目:MsSql教程 来源:网络整理
导读:有条件的条件可以保留订单吗? 我在SO上找到了this question,但在他的例子中,OP已经有一个排序的“IN”子句. 我的情况是不同的,’IN’子句是随机的 这样的东西 SELECT SomeField,OtherFieldFROM TestResult WHERE TestResult.SomeField IN (45,2,445,12,789)
有条件的条件可以保留订单吗?

我在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
...

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读