首页/数据/SQL 速查/派生表:FROM 里的子查询
本包目录(311 条)

派生表:FROM 里的子查询

把子查询当作临时表参与连接或过滤,必须给别名;MySQL 8.0.22 起支持下推条件到派生表,旧版本可能先物化整表。

SQL 速查数据更新于 2026-10-12

示例

示例
SELECT t.city, t.avg_amount
FROM (
    SELECT city, AVG(amount) AS avg_amount
    FROM orders
    GROUP BY city
) t
WHERE t.avg_amount > 500
ORDER BY t.avg_amount DESC;
别名派生表别名必须写(MySQL 强制、PG 同样要求)
物化旧版本可能整体物化,条件无法下推
替代复用多次或需要索引时考虑 CTE、临时表

易错点

  • 派生表别名漏写会直接语法报错,是常见的书写错误之一
  • 多层派生表嵌套时条件下推变弱,性能排查用 EXPLAIN 看是否出现物化节点

数据来源与参考

  • MySQL 8.0 Reference Manual · Derived Tables
  • PostgreSQL Documentation · Subqueries in FROM
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌