SQLでデータを取得するSELECT文には、絞り込みの条件や並び替え、グループ化をおこなう記法が存在するが、これらはSQLの決まりで書く順序が明確に定められている。
また、実際の処理順序は記述順と異なることもあり、分かりづらいので備忘録として本記事にまとめておく。
SELECT文の記述順序
- SELECT(取得するカラムを指定)
- FROM(対象となるテーブルを指定)
- WHERE(絞り込みの条件を指定)
- GROUP BY(グループ化の条件を指定)
- HAVING(グループ化した後の絞り込み条件を指定)
- ORDER BY(並び替えの条件を指定)
- LIMIT(取得する行数を制限)
SELECT文を書く場合は、必ず上記の順番で記述しなければならない。
しかし実際の処理順は上記とは異なる。
SELECT文の処理の実行順序
- FROM
- WHERE
- GROUP BY
- SELECT
- HAVING
- ORDER BY
- LIMIT
まず、FROMから実行され、検索対象のテーブルが決定される。
次にWHEREで指定された条件により行が絞り込まれ、GROUP BYの条件によりグループ化される。
その後、SELECTに記述された計算が実行され、HAVINGの条件によりさらに行が絞り込まれる。
最後にORDER BYで行がソートされ、LIMITで指定された行数に絞り込まれる。
通常のプログラミング言語と違い、上から順にコードが実行されるわけではないので、SQL初心者は混乱しがちだが、この順番さえ覚えておけば難解な条件によるデータの取得もすぐにできるようになるはずだ。