> 技术文档 > MySQL-Every derived table must have its own alias

MySQL-Every derived table must have its own alias


文章目录

      • ✅ 1. 作为 **表** 时
      • ✅ 2. 作为 **列**(标量子查询)时
      • ✅3. 记忆口诀

✅ 1. 作为

必须起别名,否则语法报错:

-- ❌ 错误:Every derived table must have its own aliasSELECT * FROM (SELECT * FROM t) ;-- ✅ 正确SELECT * FROM (SELECT * FROM t) AS sub; -- AS 可省略,写成 (SELECT ...) sub 也行

✅ 2. 作为 (标量子查询)时

可以不要别名:

SELECT id, (SELECT MAX(price) FROM t WHERE t.id = orders.id) AS max_price -- 有别名,更清晰FROM orders;-- 或者干脆不要别名(不报错)SELECT id, (SELECT MAX(price) FROM t WHERE t.id = orders.id) -- MySQL 允许FROM orders;

✅3. 记忆口诀

  • 子查询当“表” → 必须别名
  • 子查询当“列” → 可省别名(但建议保留可读性)

因此,养成统一给子表起别名的习惯即可避免任何平台差异。