MySQL如何自定义排序。

305 阅读1分钟

需求:根据指定字段将里面不同的值按照我定义的方式排序。

select * from table as cwo
order by (case when cwo.work_order_status_code = 1 then 0
when cwo.work_order_status_code = 2 then 1
when cwo.work_order_status_code = 3 then 2
when cwo.work_order_status_code = 4 then 3
when cwo.work_order_status_code = 5 then 4
when cwo.work_order_status_code = 7 then 5
when cwo.work_order_status_code = 9 then 6
when cwo.work_order_status_code = 30 then 8
when cwo.work_order_status_code = 31 then 9
when cwo.work_order_status_code = 33 then 10
when cwo.work_order_status_code = 32 then 11
when cwo.work_order_status_code = 33 then 12
when cwo.work_order_status_code = 37 then 13
when cwo.work_order_status_code = 35 then 14
when cwo.work_order_status_code = 36 then 15
when cwo.work_order_status_code = 42 then 16
when cwo.work_order_status_code = 43 then 17
when cwo.work_order_status_code = 44 then 18
when cwo.work_order_status_code = 45 then 19
when cwo.work_order_status_code = 8 then 20
when cwo.work_order_status_code = 41 then 21
else 50 end), cwo.create_time desc

这个是按照状态排序,外加时间倒序。 (when条件 then排第几位 else其他的排在第几位)