通过选择

时间:2016-03-05 08:57:38

标签: oracle oracle11g

我有一张包含以下数据的表格

代码目的地

atp ananthapur
blr bangalore
chn chennai
德尔迪希 hmp himachal

hy hyderbad
goa goa

我需要一个查询来获取数据,以便代码'hyd'和'blr'的行始终保持在顶部,然后其余行将跟随。

我这样做了如下 -

select code,dest from   (
        select 1 rown,a.* from LOCATION a 
        where a.code in ('hyd','blr')  
        union  
        select 2 rown,b.* from LOCATION b
        where b.code not in ('hyd','blr')
)  
order by rown

我也可以想到以其他方式做到这一点。但我的问题是 -

是否有任何oracle定义的功能来完成此任务?

1 个答案:

答案 0 :(得分:2)

是的,Oracle有这样的功能,它是ORDER BY expressions-list条款 尝试:

SELECT * FROM LOCATION a
ORDER BY 
   CASE WHEN a.code in ('hyd','blr') THEN 1 ELSE 2 END