【Mysql之自我练习<三>】select查询复杂排序(注:私用的,为了不遗失)


表task_order (id,status,start_time,time_end,verify_time,report_area_time,update_time,create_time)状态(1、未开始;2、开始;3、进行中;4、已完成;5、已评价;6、已核准;7、已结束;-1、已取消;-2、已拒绝)
项目排序要求:1、当任务状态为2,且任务计划开始时间小于等于当前时间
          2、当任务状态为3,且任务计划结束时时间小于等于当前时间
          3、当任务状态为1时,按任务计划开始时间升序
          4、当任务状态为2时,按任务计划开始时间升序
	  5、当任务状态为3时、按任务上报进度时间降序
	  6、当任务状态为4时,按任务结束时间降序
	  7、当任务状态为5时,按任务结束时间降序
          8、当任务状态为6时,按任务结束时间降序
	  9、当任务状态为7时,按任务结束时间降序
	  10、当任务状态为-1时,按任务记录更新时间降序
	  11、当任务状态为-2时,按创建任务时间降序

      
SELECT o.*,(
case
when (o.status=2 and o.start_time <= UNIX_TIMESTAMP(CURRENT_DATE())) THEN '-1'
when (o.status=2 and o.start_time > UNIX_TIMESTAMP(CURRENT_DATE())) THEN '2' 
when (o.status=3 and o.end_time <= UNIX_TIMESTAMP(CURRENT_DATE())) THEN '-2'
when (o.status=3 and o.end_time > UNIX_TIMESTAMP(CURRENT_DATE())) THEN '3'
when o.status=1 THEN '1'
when o.status=4 THEN '4'
when o.status=5 THEN '5'
when o.status=6 THEN '6'
when o.status=7 THEN '7'
when o.status=-1 THEN '8'
when o.status=-2 THEN '9'
END) as new_status
from task_order o  where f.pepole_id =75 ORDER BY new_status ASC,
case when o.status=1 THEN  o.start_time END asc,	
case when o.status=2 THEN  o.start_time END asc,
case when o.status=3 THEN  o.report_area_time END desc,
case when o.status=4 THEN  o.time_end END desc,
case when o.status=5 THEN  o.time_end END desc,
case when o.status=6 THEN  o.time_end END desc, 
case when o.status=7 THEN  o.verify_time END desc,
case when o.status=-1 THEN  o.update_time END desc,
case when o.status=-2 THEN  o.create_time END desc;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL中,<>和<=>是两个不同的运算符,它们具有不同的功能。引用中提到,!=和<>在MySQL中的功能是一样的,都表示不等于。因此,以下两条语句的作用是一样的: SELECT * FROM t_user WHERE username != "陈哈哈"; SELECT * FROM t_user WHERE username <> "陈哈哈"; 然而,<=>运算符在MySQL中具有特殊的功能,它用于比较两个表达式是否相等,包括处理NULL值。如果两个表达式都为NULL或者相等,则<=>返回1,否则返回0。这个运算符主要用于处理NULL值。例如,以下语句可以用于查找username为NULL的用户: SELECT * FROM t_user WHERE username <=> NULL; 总结起来,<>运算符用于比较两个表达式是否不相等,而<=>运算符用于比较两个表达式是否相等,并且处理NULL值。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [MySQL(MariaDB)运算符 != 和 <> 以及 = 和 <=> 的区别](https://blog.csdn.net/weixin_44718305/article/details/129355599)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [mysql-!=,<>,=,<=>,is区别及使用推荐](https://blog.csdn.net/startyangu/article/details/130221588)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值