在oracle中,一般使用order by去进行一个排序,一般只能得到一个升序或者降序,如果想让列中的某些元素排在前面后面或者中间,比如正常排序为abc,而我就想排acb排序,怎么办呢?
可以在order by后面跟上case when对数据进行重新排序:
Select * from table
order by
(case
when 字段=条件1 then 0
when 字段=条件2 then 1
else 3 end)
例:想对查询结果进行排序为:a,c,b
Select * from test
order by
(case
when name='a' then 0
when name='c' then 1
when name='b' then 2
else 3 end)
这样查询出来的结果就是以acb顺序排序的,并且a是在第一,如果说想把acb放在查询结果的末尾呢?只需要将数字进行更改:
Select * from test
order by
(case
when name='a' then 3
when name='c' then 2
when name='b' then 1
else 0 end)
领取专属 10元无门槛券
私享最新 技术干货