ORDER BY の使い方

並べ替える

書き方

… ORDER BY 列 [ASC | DESC], 列 …

ASC は小さい順(省略時)、DESC は大きい順。複数の列を書くと、前の列が同じときに次の列で並べます。

よく使うオプション

オプション意味
ASC小さい順(書かないときもこれ)
DESC大きい順
列, 列前の列が同じ行を、次の列で並べる
NULLS FIRST / NULLS LASTNULL を先頭か最後に置く(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 は、登録不要・無料で遊べます(それより先はブロンズ以上のプランで遊べます)。

SQL 構文一覧(使い方と例)へ戻る