A.5.4.與列別名有關的問題
A.5.4. 與列別名有關的問題
可以使用別名來引用GROUP BY、ORDER
BY或HAVING子句中的列。別名也能用于為列提供更好的名稱:
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不允許在WHERE子句中已用列別名。這是因為,執行WHERE代碼時,可能尚未確定列值。例如,下述查詢是非法的:
SELECT id, COUNT(*) AS cnt FROM tbl_name WHERE cnt > 0 GROUP BY id;
執行WHERE語句以確定哪些行應被包含在GROUP BY部分中,而HAVING用于確定應使用結果集中的哪些行。