版权声明:本文为博主原创文章,未经博主允许不得转载。 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;