需求
已知task表的字段有id、status(数字类型可能的值为0~4)、update_time。
现在对查询结果的顺序有要求,对于status字段,展示顺序应为status=0 > status=3 > status=1 > status=2,另外每个status值相同的数据中,记录要按照update_time倒序展示。
解决方案
SELECT *
FROM task t
WHERE id = 1
ORDER BY CASE
WHEN t.status = 0 THEN 0
WHEN t.status = 3 THEN 1
WHEN t.status = 1 THEN 2
WHEN t.status = 2 THEN 3
ELSE 4
END, t.update_time DESC
# 解释:ORDER BY [数字] 可以指定记录的展示顺序,通过CASE WHEN来手动设置匹配记录的展示顺序