FROM子句中的子查詢必須指定別名
- 示例
- 錯誤示例及原因:
- 總結:
在SQL中, FROM子句中的子查詢必須指定別名, 即使后續未引用該別名
示例
查詢館藏圖書最多的作者姓名及館藏數量
SELECT 作者, COUNT(圖書編號) AS 館藏數量
FROM 圖書
GROUP BY 作者
HAVING COUNT(圖書編號) = (SELECT MAX(數量)FROM (SELECT COUNT(圖書編號) AS 數量FROM 圖書GROUP BY 作者) AS 最大數量 -- 必須提供別名
);
若去掉 AS 最大數量,子查詢將缺少別名,導致語法錯誤。這是SQL標準的要求,數據庫無法解析未命名的派生表。
錯誤示例及原因:
-- 錯誤:子查詢缺少別名
SELECT MAX(數量)
FROM (SELECT COUNT(圖書編號) AS 數量FROM 圖書GROUP BY 作者
) -- 缺少別名
數據庫會拋出類似錯誤:
Every derived table must have its own alias
(每個派生表必須有別名)。
總結:
SQL語法強制要求:FROM子句中的子查詢必須命名(通過別名)。
別名的作用:為子查詢結果集命名,使解析器能正確識別其結構。
即使不使用別名,仍需遵循此規則,否則查詢無法執行。