MySQL字段按照特定规则排序
分享一下数据库字段排序需求不是按照自然的顺序进行升序排序;
需求:工单状态,按照生产中>挂起>待生产>已完成进行排序。
解决方法:
1、工单状态枚举对应可以设置为:
生产中:10 , 挂起: 20: ,待生产: 30 , 已完成 :40
数据库where 条件后面可以设置为:order by order_status asc。
这种方法是最简单,但是很多时候,工单状态对应枚举值已经设置好了,不能随意修改,无法按照现有状态去升序降序。
以下工单状态对应枚举是:
待生产:10 ,挂起: 20 ,生产中: 30, 已完成 : 40
2、可以用case when的方式
1 2 3 4 5 6 7 8 9 10 11 12 13 | SELECT a.*, c.product_name FROM work_order a LEFT JOIN product c ON a.product_code = c.product_code AND c.del_flag = 0 WHERE a.del_flag = 0 ORDER BY a.audit_status ASC, (CASE WHEN a.order_status = 30 THEN 1 WHEN a.order_status = 20 THEN 2 WHEN a.order_status = 10 THEN 3 WHEN a.order_status = 40 THEN 4 ELSE 5 END) ASC, a.start_time ASC; |
这样也是可以进行排序
3、采用field方式
1 2 3 4 5 6 7 8 | SELECT a.*, c.product_name FROM work_order a LEFT JOIN product c ON a.product_code = c.product_code AND c.del_flag = 0 WHERE a.del_flag = 0 ORDER BY a.audit_status ASC, field(a.order_status, 30 , 20 , 10 , 40 ) , a.start_time ASC; |
这个也可以进行排序,不过貌似这种方式只能作用于MySQL数据库。别的数据库貌似不行
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)