MySql中一條記錄兩個字段同時參與排序的問題

      對某些數據需要分情況來進行排序,比如當rebate_type = '0''時,取price,當rebate_type in('1','2','3')時,需要取rebate_price。對於這樣的數據進行排序的時候就會比較複雜,需要分情況討論來進行排序。以下是本人寫的一條sql語句來解決這樣的問題。性能方面沒有進行深入的探討,如果有更好的方法希望能提出來。

正序(ASC)

SELECT t.price,t.rebate_price FROM `t_goods` t where t.is_delete = '0' ORDER BY 
case when t.rebate_type = '0' then t.price when t.rebate_type in('1','2','3') then t.rebate_price END;

倒序(DESC)

SELECT t.price,t.rebate_price FROM `t_goods` t where t.is_delete = '0' ORDER BY 
case when t.rebate_type = '0' then 0-t.price when t.rebate_type in('1','2','3') then 0-t.rebate_price END;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章