Et alias kan bruges i en forespørgselsvalgsliste for at give en kolonne et andet navn. Du kan bruge aliaset i GROUP BY
, ORDER BY
, eller HAVING
klausuler for at henvise til kolonnen:
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;
Standard SQL tillader ikke referencer til kolonnealiasser i en WHERE
klausul. Denne begrænsning er pålagt, fordi når WHERE
klausulen evalueres, er kolonneværdien muligvis ikke bestemt endnu. For eksempel er følgende forespørgsel ulovlig:
SELECT id, COUNT(*) AS cnt FROM tbl_name
WHERE cnt > 0 GROUP BY id;
WHERE
klausul bestemmer, hvilke rækker der skal inkluderes i GROUP BY
klausul, men det refererer til alias for en kolonneværdi, der ikke er kendt før efter rækkerne er blevet valgt og grupperet efter GROUP BY
.
På valglisten for en forespørgsel kan et citeret kolonnealias angives ved hjælp af identifikator eller strenge, der citerer tegn:
SELECT 1 AS `one`, 2 AS 'two';
Andre steder i sætningen skal citerede referencer til aliasset bruge identifikator-citering, ellers behandles referencen som en bogstavelig streng. For eksempel grupperer denne sætning efter værdierne i kolonne-id, der refereres til ved hjælp af aliasset a
:
SELECT id AS 'a', COUNT(*) AS cnt FROM tbl_name
GROUP BY `a`;
Men denne sætning grupperer efter den bogstavelige streng 'a' og vil ikke fungere som forventet:
SELECT id AS 'a', COUNT(*) AS cnt FROM tbl_name
GROUP BY 'a';
Kilde:https://docs.oracle .com/cd/E17952_01/refman-5.0-en/problems-with-alias.html