mysql复杂排序

今天项目开发时,遇到一个对于后端来说比较变态的需求,而这个需求指派给前端做的话,也无法很好的实现,所以我研究了一下mysql的复杂排序,果然,发现了新大陆。

背景需求

1.现有一批需要审批的数据,审批状态码如下:

审核状态码:1.待审批;2.部门通过;3.部门驳回;4.管理员通过;5.管理员驳回;6.升级审批;7.升级通过;8.升级失败;9.已下架

2.需要对这些数据进行如下排序:

① 待审批(1)和升级审批(6)的数据需要优先,并且进行创建时间倒序;

② 其他数据放到后面,进行创建时间倒序;

实现方法

废话不多说,直接上排序的sql

ORDER BY CASE WHEN statusCode IN (1,6) THEN 1 ELSE 2 END,createTime DESC

排序规则说明一下:

1.case when里有in关键字,说明如果出现statusCode=1或者=6时,把这些数据放到第一顺位;

2.其他的状态码放到第二顺位;

3.并且按照createTime逆序

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值