SELECT句で命名したカラムはWHERE句で使えない
SELECT id, end - start AS diff
FROM table
WHERE diff > 3; //ここでエラー
↑だとエラーになる。
なんでかというと…
SQLには各句の解釈される順番があって
FROM -> WHERE -> GROUP BY -> HAVING -> SELECT -> ORDER BY
という順序だから
WHEREでカラム名を指定しても、SELECTはまだ解釈されてないから、そんなカラムないよってことになる
上の例でいうと
SELECT id, end - start AS diff
FROM table
ORDER BY diff DESC;
ORDER BY diff DESC;
は可能
考えたことなく使ってたなー
0 件のコメント:
コメントを投稿