SQLでデータを取得するSELECT文には、絞り込みの条件や並び替え、グループ化をおこなう記法が存在するが、これらはSQLの決まりで書く順序が明確に定められている。

また、実際の処理順序は記述順と異なることもあり、分かりづらいので備忘録として本記事にまとめておく。

SELECT文の記述順序

  1. SELECT(取得するカラムを指定)
  2. FROM(対象となるテーブルを指定)
  3. WHERE(絞り込みの条件を指定)
  4. GROUP BY(グループ化の条件を指定)
  5. HAVING(グループ化した後の絞り込み条件を指定)
  6. ORDER BY(並び替えの条件を指定)
  7. LIMIT(取得する行数を制限)

SELECT文を書く場合は、必ず上記の順番で記述しなければならない。

しかし実際の処理順は上記とは異なる。

SELECT文の処理の実行順序

  1. FROM
  2. WHERE
  3. GROUP BY
  4. SELECT
  5. HAVING
  6. ORDER BY
  7. LIMIT

まず、FROMから実行され、検索対象のテーブルが決定される。

次にWHEREで指定された条件により行が絞り込まれ、GROUP BYの条件によりグループ化される。

その後、SELECTに記述された計算が実行され、HAVINGの条件によりさらに行が絞り込まれる。

最後にORDER BYで行がソートされ、LIMITで指定された行数に絞り込まれる。

通常のプログラミング言語と違い、上から順にコードが実行されるわけではないので、SQL初心者は混乱しがちだが、この順番さえ覚えておけば難解な条件によるデータの取得もすぐにできるようになるはずだ。