Alias lze použít v seznamu pro výběr dotazu a dát sloupci jiný název. Alias můžete použít v GROUP BY
, ORDER BY
nebo HAVING
klauzule odkazující na sloupec:
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;
Standardní SQL nepovoluje odkazy na aliasy sloupců v WHERE
doložka. Toto omezení je zavedeno, protože když WHERE
klauzule vyhodnocena, hodnota sloupce možná ještě nebyla určena. Například následující dotaz je nezákonný:
SELECT id, COUNT(*) AS cnt FROM tbl_name
WHERE cnt > 0 GROUP BY id;
WHERE
klauzule určuje, které řádky by měly být zahrnuty do GROUP BY
klauzule, ale odkazuje na alias hodnoty sloupce, který není znám, dokud nejsou vybrány řádky a seskupeny podle GROUP BY
.
Ve výběrovém seznamu dotazu lze alias sloupce v uvozovkách zadat pomocí identifikátoru nebo řetězců:
SELECT 1 AS `one`, 2 AS 'two';
Jinde v příkazu musí citované odkazy na alias používat citování identifikátoru, jinak je odkaz považován za řetězcový literál. Například tento příkaz seskupuje podle hodnot ve sloupci id, na které se odkazuje pomocí aliasu a
:
SELECT id AS 'a', COUNT(*) AS cnt FROM tbl_name
GROUP BY `a`;
Tento příkaz se však seskupuje podle doslovného řetězce 'a' a nebude fungovat podle očekávání:
SELECT id AS 'a', COUNT(*) AS cnt FROM tbl_name
GROUP BY 'a';
Zdroj:https://docs.oracle .com/cd/E17952_01/refman-5.0-en/problems-with-alias.html