根据IN子句中给出的顺序对查询结果进行排序

kri*_*dam -2 sql oracle db2

我想根据IN子句示例中的顺序来命令sql查询的结果集:

select * from Employee where EmpID='Eng' and DeptID IN ('Software','Mech','Aero','Civil'), 
Run Code Online (Sandbox Code Playgroud)

对于上述查询,我​​想订购顺序中的结果集1.软件,2.Mech,3.Aero,4.Civil

Gor*_*off 5

在Oracle中,使用instr()case:

select *
from Employee
where EmpID='Eng' and DeptID IN ('Software','Mech','Aero','Civil')
order by instr('Software,Mech,Aero,Civil', DeptId)
Run Code Online (Sandbox Code Playgroud)

这也适用于DB2.

case表单也适用于两个数据库,但更长:

order by (case DeptID when 'Software' then 1
                      when 'Mech' then 2
                      when 'Aero' then 3
                      when 'Civil' then 4
          end)
Run Code Online (Sandbox Code Playgroud)