top
Loading...
A.5.4.與列別名有關的問題
A.5.4. 與列別名有關的問題
可以使用別名來引用GROUP BYORDER BYHAVING子句中的列。別名也能用于為列提供更好的名稱:
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用于確定應使用結果集中的哪些行。

作者:mysql.com
來源:http://dev.mysql.com/doc/refman/5.1/zh/problems.html
北斗有巢氏 有巢氏北斗