如何在SQL查询中设置条件逻辑以便改组优先级?
例如,如果我有像“id”,“name”,“event_id”这样的列的表,并且我有不同的“event_id”,如180,181,270,271,我需要以这样的方式排序“event_id”270将位于顶部,然后是“even_id”271的行,其余数据将按“id”列按降序排序。
答案 0 :(得分:13)
使用CASE语句执行您想要的订单
ORDER BY
CASE
WHEN event_id = 270 THEN 0
WHEN event_id = 271 THEN 1
ELSE 2
END,
id DESC
答案 1 :(得分:8)
我更喜欢CASE:
ORDER BY CASE event_id WHEN 270 THEN 0
WHEN 271 THEN 1
END NULLS LAST,
id DESC;
但有时我会使用DECODE,这有点不那么罗嗦:
ORDER BY DECODE(event_id, 270, 0,
271, 1,
2),
id DESC;
答案 2 :(得分:0)
如果你只有一个案例,这是一个简单的方法:
ORDER BY event_id <> 270 ASC, event_id ASC
表达式event_id <> 270
的计算结果为0表示false,1表示true表示。