最近項目中涉及一個需求:顯示某個表數據時,希望把其中某個字段爲特定值的行置頂或置底顯示,以便區分
假如我們有一個職級表userlevel
其中職級字段rank有0原級、1初級、2中級、3高級、4資深,一共五個枚舉值,我希望每次查詢的時候將3高級置頂顯示
貧窮限制了我的思維,以下SQL解決方法來自網絡:
1.通過case when+排序
select (case when a.rank='3' then 0 else 1 end) as flag,a.* from userlevel a order by flag asc;
這是置頂顯示,置底的話order by flag desc反序排列即可;
2.通過union
select * from userlevel where rank='3' union all select * from userlevel where rank<>'3';