Aliasu można użyć w liście wyboru zapytania, aby nadać kolumnie inną nazwę. Możesz użyć aliasu w GROUP BY
, ORDER BY
lub HAVING
klauzule odnoszące się do kolumny:
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;
Standardowy SQL nie zezwala na odwołania do aliasów kolumn w WHERE
klauzula. To ograniczenie jest nałożone, ponieważ gdy WHERE
klauzula jest oceniana, wartość kolumny mogła nie zostać jeszcze określona. Na przykład następujące zapytanie jest niedozwolone:
SELECT id, COUNT(*) AS cnt FROM tbl_name
WHERE cnt > 0 GROUP BY id;
WHERE
klauzula określa, które wiersze powinny być zawarte w GROUP BY
klauzula, ale odnosi się do aliasu wartości kolumny, która nie jest znana, dopóki wiersze nie zostaną wybrane i pogrupowane według GROUP BY
.
Na liście wyboru zapytania alias kolumny w cudzysłowie można określić za pomocą identyfikatora lub znaków cudzysłowu:
SELECT 1 AS `one`, 2 AS 'two';
W innym miejscu instrukcji cytowane odniesienia do aliasu muszą używać cytowania identyfikatora lub odwołanie jest traktowane jako literał ciągu. Na przykład ta instrukcja grupuje według wartości w kolumnie id, do której odwołuje się alias a
:
SELECT id AS 'a', COUNT(*) AS cnt FROM tbl_name
GROUP BY `a`;
Ale to stwierdzenie grupuje się według dosłownego ciągu „a” i nie będzie działać zgodnie z oczekiwaniami:
SELECT id AS 'a', COUNT(*) AS cnt FROM tbl_name
GROUP BY 'a';
Źródło:https://docs.oracle .com/cd/E17952_01/refman-5.0-en/problems-with-alias.html