Spec-Zone.ru › MySQL 8.4

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.
https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/problems-with-alias.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API