Ett alias kan användas i en frågevallista för att ge en kolumn ett annat namn. Du kan använda aliaset i GROUP BY
, ORDER BY
, eller HAVING
satser för att hänvisa till kolumnen:
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 tillåter inte referenser till kolumnalias i en WHERE
klausul. Denna begränsning införs eftersom när WHERE
klausulen utvärderas, kanske kolumnvärdet ännu inte har fastställts. Till exempel är följande fråga olaglig:
SELECT id, COUNT(*) AS cnt FROM tbl_name
WHERE cnt > 0 GROUP BY id;
WHERE
satsen bestämmer vilka rader som ska inkluderas i GROUP BY
sats, men det hänvisar till aliaset för ett kolumnvärde som inte är känt förrän efter att raderna har valts och grupperat efter GROUP BY
.
I urvalslistan för en fråga kan ett kolumnalias med citattecken anges med hjälp av identifierare eller sträng med citationstecken:
SELECT 1 AS `one`, 2 AS 'two';
På andra ställen i uttalandet måste citerade referenser till aliaset använda identifierarcitation eller så behandlas referensen som en bokstavlig sträng. Till exempel grupperar den här satsen efter värdena i kolumn-id, refererade till med aliaset a
:
SELECT id AS 'a', COUNT(*) AS cnt FROM tbl_name
GROUP BY `a`;
Men detta påstående grupperar efter den bokstavliga strängen 'a' och kommer inte att fungera som förväntat:
SELECT id AS 'a', COUNT(*) AS cnt FROM tbl_name
GROUP BY 'a';
Källa:https://docs.oracle .com/cd/E17952_01/refman-5.0-en/problems-with-alias.html