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 と同等です。より読みやすい方を使用してください。
チャレンジ
簡単利用可能なテーブルとカラム:
<strong>tasks</strong>:<strong>id</strong>,<strong>title</strong>,<strong>priority</strong>
titleとpriorityを返してください。順序は、'critical'が最初、次に'high'、その次に'low'、それ以外が最後になるようにします。同じ優先度内では、titleのアルファベット順でソートしてください。
チートシート
カスタムルールでソートするには、ORDER BY の中で CASE を使用します:
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 ... は、CASE WHEN column = value THEN ... と同等です。
自分で試してみよう
SELECT title, priority
FROM tasks
ORDER BY
-- ...
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。