Spec-Zone.ru › MySQL 5.7

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-5.7-en/problems-with-alias.html

Spec-Zone.ru

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