ORDER BY 中的 CASE
本课属于 Coddy SQL 学习旅程的“进阶内容”单元。第 2 课,共 27 课。
CASE 不只用于 SELECT。你可以把它放在 ORDER BY 中,按照自定义规则对行排序,这种规则无法仅用列来表达。
SELECT name, status
FROM tickets
ORDER BY
CASE status
WHEN 'urgent' THEN 1
WHEN 'high' THEN 2
WHEN 'normal' THEN 3
ELSE 4
END注意这个更简短的形式:CASE column WHEN value THEN ...。它等同于 WHEN column = value。选择读起来更清晰的形式即可。
挑战
简单可用的表和列:
tasks:id,title,priority
返回 title 和 priority,排序时让 'critical' 排在最前,然后是 'high',接着是 'low',其他值排在最后。优先级相同时,按 title 的字母顺序排序。
亲手试试
SELECT title, priority
FROM tasks
ORDER BY
-- 将下方占位用的排序方式替换为 CASE 表达式,
-- 按任务要求为各行排序,同名次时再按字母顺序排列。
id
这节课包含一个小测验。开始学习即可作答,并记录你的进度。
进阶内容中的所有课
自己练习: SQL 在线编辑器