B.3.4.4 Проблемы с псевдонимами столбцов
Псевдоним может использоваться в списке выбора запроса для изменения имени столбца. Вы можете использовать псевдоним в GROUP
BY, ORDER BY или HAVING предложениях для ссылки на столбец:
SELECT SQRT(a*b) AS root FROM tbl_name
GROUP BY root HAVING root > 0;
SELECT id, COUNT(*) AS cnt FROM tbl_name
GROUP BY id HAVING cnt > 0;
SELECT id AS 'Customer identity' FROM tbl_name;
Стандартный SQL запрещает ссылки на псевдонимы столбцов в предложении WHERE. Это ограничение введено, потому что при оценке предложения WHERE значение столбца может ещё не быть определено. Например, следующий запрос некорректен:
SELECT id, COUNT(*) AS cnt FROM tbl_name
WHERE cnt > 0 GROUP BY id;
Предложение WHERE определяет, какие строки должны быть включены в предложение GROUP BY, но оно ссылается на псевдоним значения столбца, которое становится известно только после того, как строки были выбраны и сгруппированы по GROUP BY.
В списке выбора запроса можно указать псевдоним столбца, заключённый в кавычки, используя символы кавычек идентификатора или строки:
SELECT 1 AS `one`, 2 AS 'two';
В других частях оператора ссылки на псевдоним, заключённые в кавычки, должны использовать кавычки идентификатора, иначе ссылка обрабатывается как строковая константа. Например, этот оператор группирует значения столбца id, используя псевдоним `a`:
SELECT id AS 'a', COUNT(*) AS cnt FROM tbl_name
GROUP BY `a`;
Этот оператор группирует по строковой константе 'a' и не работает так, как вы ожидаете:
SELECT id AS 'a', COUNT(*) AS cnt FROM tbl_name
GROUP BY 'a';
© 2025 Oracle
Licensed under the GPLv2 License.