1

我在表格中有以下数据

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 查询?

4

1 回答 1

2
select *
from table1
order by case when val in ('hi', 'howdy') then 0 else 1 end, val

sql fiddle demo

或者

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
于 2013-09-20T17:47:43.400 回答