MySQL 8.4 發行說明
別名可以在查詢的 select 清單中使用,為欄位提供不同的名稱。您可以在 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
子句中,但它參照的是在選取列並由 GROUP BY
分組後才知道的欄位值的別名。
在查詢的 select 清單中,可以使用識別碼或字串引號指定加上引號的欄位別名
SELECT 1 AS `one`, 2 AS 'two';
在陳述式中的其他地方,對別名的加上引號的參照必須使用識別碼引號,否則該參照會被視為字串文字。例如,此陳述式按欄位 id
中的值分組,並使用別名 `a`
參照
SELECT id AS 'a', COUNT(*) AS cnt FROM tbl_name
GROUP BY `a`;
此陳述式按字串文字 'a'
分組,並且不會如您預期地工作
SELECT id AS 'a', COUNT(*) AS cnt FROM tbl_name
GROUP BY 'a';