对某些数据需要分情况来进行排序,比如当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;