項目中有時需要按照業務的要求對數據進行排序,但是針對排序的字段直接使用 ORDER BY AAA DESC,BBB ASC 這樣可並不能滿足要求。比如某個字段orderState的值可能為 【3,5,2,4,1】,直接排序的話要么是12345,要么是54321,但是排序要求可能是按照24135這樣排,那么此時可以使用自定義排序。下面的例子,就是按照 對 tmp4.operatestate 這個狀態值 按照【承運中】,【待分配】進行降序排序。
ORDER BY FIELD(tmp4.operatestate, '承運中', '待分配') DESC
【注意】:這種排序方式效率是很低的,如果數據量較小且數據變化頻率不大或者有較長時間的緩存,可以使用這種排序,否則盡量避免使用此種排序方法,這就要求設計業務方案時以及對其實現時考慮到排序的問題,盡量避免出現這種情況。