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数据库。别的数据库貌似不行

 

posted @   多多指教~  阅读(469)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示