Un alias peut être utilisé dans une liste de sélection de requête pour donner un nom différent à une colonne. Vous pouvez utiliser l'alias dans GROUP BY
, ORDER BY
, ou HAVING
clauses pour faire référence à la colonne :
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;
Le SQL standard interdit les références aux alias de colonne dans un WHERE
clause. Cette restriction est imposée car lorsque le WHERE
clause est évaluée, la valeur de la colonne n'a peut-être pas encore été déterminée. Par exemple, la requête suivante est illégale :
SELECT id, COUNT(*) AS cnt FROM tbl_name
WHERE cnt > 0 GROUP BY id;
Le WHERE
la clause détermine quelles lignes doivent être incluses dans le GROUP BY
clause, mais elle fait référence à l'alias d'une valeur de colonne qui n'est connue qu'après que les lignes ont été sélectionnées et regroupées par le GROUP BY
.
Dans la liste de sélection d'une requête, un alias de colonne entre guillemets peut être spécifié à l'aide d'un identifiant ou d'une chaîne entre guillemets :
SELECT 1 AS `one`, 2 AS 'two';
Ailleurs dans l'instruction, les références entre guillemets à l'alias doivent utiliser des guillemets d'identificateur ou la référence est traitée comme un littéral de chaîne. Par exemple, cette instruction regroupe les valeurs de la colonne id, référencées à l'aide de l'alias a
:
SELECT id AS 'a', COUNT(*) AS cnt FROM tbl_name
GROUP BY `a`;
Mais cette instruction regroupe par la chaîne littérale 'a' et ne fonctionnera pas comme prévu :
SELECT id AS 'a', COUNT(*) AS cnt FROM tbl_name
GROUP BY 'a';
Source :https://docs.oracle .com/cd/E17952_01/refman-5.0-en/problems-with-alias.html