1. 程式人生 > >SQL: Case-When實現複雜排序

SQL: Case-When實現複雜排序

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 ↩︎