ORDER BY の使い方
並べ替える
書き方
… ORDER BY 列 [ASC | DESC], 列 …
ASC は小さい順(省略時)、DESC は大きい順。複数の列を書くと、前の列が同じときに次の列で並べます。
よく使うオプション
| オプション | 意味 |
|---|---|
ASC | 小さい順(書かないときもこれ) |
DESC | 大きい順 |
列, 列 | 前の列が同じ行を、次の列で並べる |
NULLS FIRST / NULLS LAST | NULL を先頭か最後に置く(PostgreSQL・Oracle) |
番号 | SELECT に書いた列の番目で並べる(ORDER BY 2 など) |
例
SELECT name, salary FROM employees ORDER BY salary DESC; name | salary
------+--------
鈴木 | 350000
佐藤 | 300000
田中 | 280000
(3 rows)給与の高い順に並べます。DESC を外すと低い順になります。
SELECT name, dept_id, salary FROM employees ORDER BY dept_id, salary DESC;
部署の番号順に並べ、同じ部署の中では給与の高い順にします。
SELECT name, hired_on FROM employees ORDER BY hired_on;
入社した日の古い順に並べます。日付も数と同じように並べられます。
SELECT name, phone FROM customers ORDER BY phone NULLS LAST;
電話番号の順に並べ、番号の無い客を最後に置きます。
よくある間違い・注意
- ORDER BY が無いときの並び順は決まっていません。いつも同じ順に見えても、順番が要るときは必ず書きます。
- PostgreSQL と Oracle は、小さい順のとき NULL を最後に置きます。MySQL は先頭に置くので、結果が変わります。
実際に打って練習する
SQL コースの Lv5「並べる ORDER BY」で覚えます。ブラウザの中のシミュレーターで、本物と同じように打って確かめられます。
Lv1〜3 は、登録不要・無料で遊べます(それより先はブロンズ以上のプランで遊べます)。