MySQL-Every derived table must have its own alias
文章目录
- ✅ 1. 作为 **表** 时
- ✅ 2. 作为 **列**(标量子查询)时
- ✅3. 记忆口诀
✅ 1. 作为 表 时
必须起别名,否则语法报错:
-- ❌ 错误:Every derived table must have its own alias
SELECT *
FROM (SELECT * FROM t) ;-- ✅ 正确
SELECT *
FROM (SELECT * FROM t) AS sub; -- AS 可省略,写成 (SELECT ...) sub 也行
✅ 2. 作为 列(标量子查询)时
可以不要别名:
SELECTid,(SELECT MAX(price) FROM t WHERE t.id = orders.id) AS max_price -- 有别名,更清晰
FROM orders;-- 或者干脆不要别名(不报错)
SELECTid,(SELECT MAX(price) FROM t WHERE t.id = orders.id) -- MySQL 允许
FROM orders;
✅3. 记忆口诀
- 子查询当“表” → 必须别名
- 子查询当“列” → 可省别名(但建议保留可读性)
因此,养成统一给子表起别名的习惯即可避免任何平台差异。