0
0

【MySQL】SQLでの処理順

Posted at

はじめに

最近MySQLのクエリを書いているときにSELECT句でASを使って作ったカラム名をWHERE句に投げるとエラーになった原因を調べて分かったことをメモ代わりに置いておきます。

WHERE句にSELECT句のASで作成したカラム名を投げると

入力
SELECT id AS number FROM table WHERE number = 1;
出力
ERROR 1054(42522): Unknown column 'number' in 'where clause'

とこのようにこのようなカラムは存在しませんとエラーを返されます。

なぜこのようなことになるのか

調べてみたところ、SQLでは上から順に実行されていくわけではなく、下記のように実行される順序があるようでした。

順序
1 FROM
2 JOIN
3 WHERE
4 GROUP BY
5 HAVING
6 SELECT
7 ORDER BY
8 LIMIT

SELECT句よりもWHERE句のほうが先に実行されるのでASによってカラム名が作成されるよりも前に呼び出そうとしてしまい結果的にカラムが存在しないということになるようです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0