SQL: Case-When实现复杂排序

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/m0_37793798/article/details/84205279

2018.11.18

文章目录

前言

某个模块读取SQL server时,需要按一定的优先级读取,比如满足T.a = 'A’的先读,T.b='B’的次之,T.c='C’的优先级最低。最简单的方案,就是分三条SQL读取,依次判断是否为空,再决定是否读下一条。但我想尝试一下,只用一条SQL能否实现。

方法

使用Case-When1

select * from T t
where 
    t.a = 'A' or
    t.b = 'B' or
    t.c = 'C'
order by
    case 
        when t.a = 'A' then 0
        when t.b = 'B' then 1
        when t.c = 'C' then 2
    end asc;

  1. Specifying a conditional order ↩︎

猜你喜欢

转载自blog.csdn.net/m0_37793798/article/details/84205279