對某些數據需要分情況來進行排序,比如當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;