MySQL Case When 語法
語法
(1) Case when 欄位=值1 then 文字1 when 欄位=值2 then 文字2 else null End
(2) SELECT CASE ("欄位名") WHEN "條件1" THEN "結果1"
WHEN "條件2" THEN "結果2"
...
[ELSE "結果N"]
END
FROM "表格名";
狀況應用
現在要從資料庫中取得月份後排序,但月份中有0的月份
如果是1~12,要由小到大
如果是0~12,要由小到大,但0要排在12後面
所以我用ORDER BY + Case When來排序
(1) ORDER BY CASE month WHEN 0 THEN 0 ELSE 1 END desc,month asc
(2) ORDER BY CASE WHEN month = 0 THEN 0 ELSE 1 END desc,month asc
先處理當month 為0的時候,顯示0並且使用desc(由大到小排序)
因為是0應該是最小的,所以接著安心地排列其他的
使用asc(由小排到大組合)
顯示結果
1 2 3 ... 10 11 12 0
參考
http://www.dotblogs.com.tw/nemochen/archive/2010/07/25/16789.aspx
沒有留言:
張貼留言