分享一下数据库字段排序需求不是按照自然的顺序进行升序排序;
需求:工单状态,按照生产中>挂起>待生产>已完成进行排序。
解决方法:
1、工单状态枚举对应可以设置为:
生产中:10 , 挂起: 20: ,待生产: 30 , 已完成 :40
数据库where 条件后面可以设置为:order by order_status asc。
这种方法是最简单,但是很多时候,工单状态对应枚举值已经设置好了,不能随意修改,无法按照现有状态去升序降序。
以下工单状态对应枚举是:
待生产:10 ,挂起: 20 ,生产中: 30, 已完成 : 40
2、可以用case when的方式
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方式
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数据库。别的数据库貌似不行
标签:status,product,code,ASC,字段,MySQL,排序,order From: https://www.cnblogs.com/qwg-/p/18026898