Spec-Zone .ru
спецификации, руководства, описания, API

C.5.5.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 отвергает ссылки на псевдонимы столбца в a 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';