MySQL 自定义排序

      项目中有时需要按照业务的要求对数据进行排序,但是针对排序的字段直接使用 ORDER BY AAA DESC,BBB ASC 这样可并不能满足要求。比如某个字段orderState的值可能为 【3,5,2,4,1】,直接排序的话要么是12345,要么是54321,但是排序要求可能是按照24135这样排,那么此时可以使用自定义排序。下面的例子,就是按照 对 tmp4.operatestate 这个状态值 按照【承运中】,【待分配】进行降序排序。

ORDER BY FIELD(tmp4.operatestate, '承运中', '待分配') DESC

【注意】:这种排序方式效率是很低的,如果数据量较小且数据变化频率不大或者有较长时间的缓存,可以使用这种排序,否则尽量避免使用此种排序方法,这就要求设计业务方案时以及对其实现时考虑到排序的问题,尽量避免出现这种情况。

原文地址:https://www.cnblogs.com/zhuchaoyang123/p/12924041.html