MySQL order by基于不同字段条件排序

MySQL order by基于不同字段条件排序

从数据库上查询数据的时候,按要求排序,在某个字段的不同值的基础上再选择不同的字段进行排序,具体描述如下:

1:首先有一个基础字段status ,status 的取值分别为:1、2、3、4
2:先对status 进行排列,但是要求顺序为:2、1、3、4(其实每个值都代表一种含义,简单处理就是,将1和2代表的
   含义调换位置,那就不用对这个字段做处理直接升序就ok了,这里为了复杂一点,就这样定义。)
3:如果status 为1,按follow_up_time做降序;
   如果status 为2,按follow_up_time做降序,若follow_up_time为空,则按appointment_time降序;
   如果status 为3,按next_follow_up_time做降序;
   如果status 为4,按final_follow_up_time做升序;

具体实现如下,先贴出来SQL,再进行解释

 SELECT 
 *FROM t_user_appointment
 ORDER BY
	 CASE WHEN status = 2 THEN 0 ELSE 4 END ASC,
	 status ASC,
	 CASE WHEN status = 1 THEN follow_up_time END DESC,
	 CASE WHEN status = 2 
			THEN (CASE WHEN follow_up_time IS NULL 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值