2018-05-29

[DB] 指定欄位某些值優先排序

某欄位裡有值 0~9,使用 Order by 排序不是由小到大(Asc),就是由大到小(Desc)。

今日遇到需求是 5 要排第一個,其他值由小到大排序。依照上面的觀念,馬上就跟他說不可能。

回頭想想,這種需求在某些情況下確實真的會發生,於是 Google 看看,沒想到 SQL 真的辦的到,而且不需要用到內建的 function,特此記錄一下。

P.S:以下範例不是唯一的方法,當然還有其他方法也能做到。


下圖是基本的由小到大排序(Asc):

指定欄位某個值排在第一個,如下圖 5 優先排在第一個,其他預設排序(Asc):(註:case 後面的 else 只要比前面的數字大即可。)

指定多個值也行,如下圖 5 優先排在第一個,2 排在第二個,其他預設排序(Asc):

如果 case 後面的 else 數字比前面的數字小,那就是排在最後面,如下圖的 0:


參考來源:趕知識

沒有留言:

張貼留言