Ein Alias kann in einer Abfrageauswahlliste verwendet werden, um einer Spalte einen anderen Namen zu geben. Sie können den Alias in GROUP BY
verwenden , ORDER BY
, oder HAVING
Klauseln, um auf die Spalte zu verweisen:
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 verbietet Verweise auf Spaltenaliase in einem WHERE
Klausel. Diese Einschränkung wird auferlegt, weil wenn der WHERE
-Klausel ausgewertet wird, wurde der Spaltenwert möglicherweise noch nicht bestimmt. Die folgende Abfrage ist beispielsweise illegal:
SELECT id, COUNT(*) AS cnt FROM tbl_name
WHERE cnt > 0 GROUP BY id;
Das WHERE
-Klausel bestimmt, welche Zeilen in GROUP BY
eingeschlossen werden sollen -Klausel, bezieht sich aber auf den Alias eines Spaltenwerts, der erst bekannt ist, nachdem die Zeilen ausgewählt und durch GROUP BY
gruppiert wurden .
In der Auswahlliste einer Abfrage kann ein Spaltenalias in Anführungszeichen mithilfe von Bezeichnern oder Zeichenketten in Anführungszeichen angegeben werden:
SELECT 1 AS `one`, 2 AS 'two';
An anderer Stelle in der Anweisung müssen in Anführungszeichen gesetzte Referenzen auf den Alias Bezeichner in Anführungszeichen setzen oder die Referenz wird als Zeichenfolgenliteral behandelt. Diese Anweisung gruppiert beispielsweise nach den Werten in Spalte id, auf die mit dem Alias a
verwiesen wird :
SELECT id AS 'a', COUNT(*) AS cnt FROM tbl_name
GROUP BY `a`;
Aber diese Anweisung gruppiert nach der Literalzeichenfolge 'a' und funktioniert nicht wie erwartet:
SELECT id AS 'a', COUNT(*) AS cnt FROM tbl_name
GROUP BY 'a';
Quelle:https://docs.oracle .com/cd/E17952_01/refman-5.0-en/problems-with-alias.html