Mysql 按自定義順序排序
1. 按指定狀態順序排序
例如有以下表:
id | name | status | create_time |
---|---|---|---|
1 | 待審覈 | 2 | 2020-05-01 12:32:45 |
2 | 審覈通過 | 1 | 2020-05-03 12:32:45 |
3 | 審覈拒絕 | 3 | 2020-05-04 12:32:45 |
現在需要按審覈狀態排序,待審覈的需要放到前面,然後是審覈通過的,最後是審覈拒絕的。可以如下寫sql:
SELECT
*
FROM
table
ORDER BY FIELD(STATUS, 2, 1, 3)
這樣就可以按指定狀態順序排序了。
2. 某一指定狀態置頂,其它數據按時間排序
還是對照上面的數據,待審覈狀態需要排在最前,其它狀態按時間倒序,這種情況可以這樣寫:
SELECT
*
FROM
table
ORDER BY (CASE WHEN STATUS=2 THEN 1 ELSE 2 END), CREATE_TIME DESC
按照每條數據的STATUS
字段重新設置編號,然後再進行排序。