MySQL 9.0 發行說明
別名可用於查詢選取清單中,為欄位指定不同的名稱。您可以使用 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 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';