📌 結論から理解する
ORDER BY=「取得した結果を並び替える」
ORDER BYはSELECT結果を指定した列で昇順・降順に並び替えます。
ORDER BYはSQLの最後に書き、実行順序も一番最後(SELECT後)です。
ORDER BYの基本
-- 単一列で昇順(ASCはデフォルト)
SELECT * FROM products
ORDER BY price ASC;
-- 降順
SELECT * FROM products
ORDER BY price DESC;
-- 複数列で並び替え(カテゴリ昇順→価格降順)
SELECT * FROM products
ORDER BY category ASC, price DESC;
-- SELECT列の番号で指定(非推奨)
SELECT product_name, price FROM products
ORDER BY 2 DESC; -- 2列目(price)で降順
SELECT * FROM products
ORDER BY price ASC;
-- 降順
SELECT * FROM products
ORDER BY price DESC;
-- 複数列で並び替え(カテゴリ昇順→価格降順)
SELECT * FROM products
ORDER BY category ASC, price DESC;
-- SELECT列の番号で指定(非推奨)
SELECT product_name, price FROM products
ORDER BY 2 DESC; -- 2列目(price)で降順
NULLの並び順
NULLの並び順はDBMS依存です。試験ではこれが問われます。
| DBMS | ASC時のNULL位置 | DESC時のNULL位置 |
|---|---|---|
| PostgreSQL/Oracle | 末尾(最大値扱い) | 先頭(最大値扱い) |
| MySQL | 先頭(最小値扱い) | 末尾(最小値扱い) |
NULLS FIRST / NULLS LAST を明示指定するのが安全(PostgreSQL, Oracle対応)。
試験では「ORDER BYを書かないとどうなるか」→ 順序は保証されない(毎回同じ順番とは限らない)が正解。
🧠 確認クイズ
Q1. ORDER BY price DESC の説明として正しいのはどれか?
Q2. ORDER BY department ASC, salary DESC の意味として正しいのはどれか?
Q3. ORDER BYを指定しないSELECTの結果順序はどうなるか?