Oracle IN条件没有排序

Kei*_*eoh 1 database oracle

我是否知道有没有解决方案可以在没有Oracle订购的情况下获得结果?这是因为当我按如下方式执行查询时,它似乎会自动帮助我按ID字段对其进行排序.

SELECT ID FROM USER WHERE ID IN (5004, 5003, 5005, 5002, 5008);


Actual results          Expected results
---5002                 ---5004
---5003                 ---5003
---5004                 ---5005
---5005                 ---5002
---5008                 ---5008
Run Code Online (Sandbox Code Playgroud)

百万,谢谢,如果你们有这方面的解决方案.

sge*_*des 5

这是我过去看到过的一种方式INSTR:

SELECT *
FROM YourTable
WHERE ID IN (5004, 5003, 5005, 5002, 5008)
ORDER BY INSTR ('5004,5003,5005,5002,5008', id)
Run Code Online (Sandbox Code Playgroud)

SQL小提琴演示

我也看到过这样的用法CASE:

ORDER BY
  CASE ID 
    WHEN 5004 THEN 1   
    WHEN 5003 THEN 2   
    WHEN 5005 THEN 3   
    WHEN 5002 THEN 4   
    WHEN 5008 THEN 5
  END 
Run Code Online (Sandbox Code Playgroud)


O. *_*nes 5

SELECT除非您给出一个子句,否则语句将以不可预测的顺序返回其结果集的行ORDER BY.

某些DBMS产品给出了其结果集处于可预测顺序的错觉.但如果你依赖它,你一定会失望.