Se puede usar un alias en una lista de selección de consulta para dar a una columna un nombre diferente. Puedes usar el alias en GROUP BY
, ORDER BY
, o HAVING
cláusulas para referirse a la columna:
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 estándar no permite referencias a alias de columna en un WHERE
cláusula. Esta restricción se impone porque cuando el WHERE
se evalúa la cláusula, es posible que aún no se haya determinado el valor de la columna. Por ejemplo, la siguiente consulta es ilegal:
SELECT id, COUNT(*) AS cnt FROM tbl_name
WHERE cnt > 0 GROUP BY id;
El WHERE
determina qué filas deben incluirse en el GROUP BY
cláusula, pero se refiere al alias de un valor de columna que no se conoce hasta después de que las filas hayan sido seleccionadas y agrupadas por GROUP BY
.
En la lista de selección de una consulta, se puede especificar un alias de columna entre comillas mediante caracteres de comillas de identificador o cadena:
SELECT 1 AS `one`, 2 AS 'two';
En otras partes de la declaración, las referencias entre comillas al alias deben usar comillas de identificador o la referencia se trata como una cadena literal. Por ejemplo, esta declaración agrupa por los valores en la columna id, a la que se hace referencia con el alias a
:
SELECT id AS 'a', COUNT(*) AS cnt FROM tbl_name
GROUP BY `a`;
Pero esta declaración se agrupa por la cadena literal 'a' y no funcionará como se esperaba:
SELECT id AS 'a', COUNT(*) AS cnt FROM tbl_name
GROUP BY 'a';
Fuente:https://docs.oracle .com/cd/E17952_01/refman-5.0-en/problemas-con-alias.html