Читал, что псевдонимы столбцов нельзя использовать в предложении WHERE, поскольку запрос обрабатывается по схеме:
- FROM
- WHERE
- GROUP BY
- HAVING
- SELECT
- ORDER BY
Таким образом, на момент обработки WHERE, определенные в SELECT псевдонимы еще не назначены.
И действительно, запрос...
SELECT model AS PcModel FROM PC
WHERE PcModel > 22
...выдает ошибку "Lookup Error - MySQL Database Error: Unknown column 'PcModel' in 'where clause"
-------------------------------------
Суть вопроса:
Следуя озвученной логике, я предположил, что псевдонимы в HAVING должны тоже генерить эту ошибку, однако запрос...
SELECT model, MAX(price) AS PcPrice FROM PC
GROUP BY model
HAVING PcPrice > 800;
... спокойненько работает.
Объясните пожалуйста, почему так? Ведь должна же быть ошибка, поскольку HAVING отрабатывается раньше SELECT.