SQL语句之多条件排序

需求

已知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来手动设置匹配记录的展示顺序

猜你喜欢

转载自blog.csdn.net/Ka__ze/article/details/131720953