在 MySQL 中,AS 關鍵字用於為查詢欄位或資料表指定別名,雖然語法上可選,但善用它能大幅提升 SQL 可讀性並避免隱蔽 Bug。本文系統梳理用法細節與最佳實踐。
SELECT CONCAT(last_name, ', ', first_name) AS full_name
FROM mytable
ORDER BY full_name;
-- 合法但易誤讀
SELECT CONCAT(last_name, ', ', first_name) full_name
FROM mytable ORDER BY full_name;
SELECT columna columnb FROM mytable;
-- MySQL 解析為:columna 為欄位,columnb 為其別名
-- 實際意圖可能是查詢兩個欄位 columna, columnb
最佳實踐:永遠顯式寫 AS,並在欄位間加逗號,杜絕歧義。
SELECT t1.name, t2.salary
FROM employee AS t1, info AS t2
WHERE t1.name = t2.name;
-- 或省略 AS
SELECT t1.name, t2.salary
FROM employee t1, info t2
WHERE t1.name = t2.name;
SELECT e.first_name, j.title, d.task
FROM employee e
LEFT JOIN job j ON e.ID = j.ID
LEFT JOIN duty d ON e.ID = d.ID
WHERE j.title = 'Manager';
GROUP BY、ORDER BY、HAVINGWHERE、GROUP BY(某些版本)、JOIN ON 條件中(需重複原表達式或用子查詢/CTE)| 場景 | 建議寫法 | 備註 |
|---|---|---|
| 欄位別名 | expr AS alias | 必寫 AS,防漏逗號 |
| 表別名 | table AS alias 或 table alias | 兩者皆可,團隊統一風格 |
| ORDER BY/GROUP BY | 直接用別名 | 標準 SQL 支援 |
| WHERE/HAVING | 不可直接用別名 | 需重寫表達式或套子查詢 |
掌握 AS 細節,寫出更健壯、可維護的 SQL。