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.