我在表格中有以下数据
pk | i | val
------------
1 | 0 | hi
2 | 3 | good bye
3 | 4 | good day
5 | 6 | howdy
如果 I select * from mytable ORDER BY val
,我将得到 2、3、1、5 的顺序。
但是,如果我想在其余正常排序的行之前给两个特定行“优先”怎么办?假设 val=hi,再见。
换句话说,我将如何编写能够返回 1、5、2、3 的 SQL 查询?
select *
from table1
order by case when val in ('hi', 'howdy') then 0 else 1 end, val
或者
select *
from table1
order by
case val
when 'howdy' then 0
when 'hi' then 1
else 2
end, val
或(更容易添加新变量)
select *
from table1
order by
case val
when 'howdy' then 2
when 'hi' then 1
else 0
end desc, val