概念

如果子查询的执行依赖于外部查询,通常情况下都是因为子查询中的表用到了外部的表,并进行了条件关联,因此每执行一次外部查询,子查询都要重新计算一次,这样的子查询就称之为关联子查询。

执行流程

相关子查询按照一行接一行的顺序执行,主查询的每一行都执行一次子查询。
image.png
image.png
子查询中需要使用主查询中的列

结论:在SELECT中,除了GROUP BY 和 LIMIT之外,其他位置都可以声明子查询! SELECT ….,….,….(存在聚合函数) FROM … (LEFT / RIGHT)JOIN ….ON 多表的连接条件 (LEFT / RIGHT)JOIN … ON …. WHERE 不包含聚合函数的过滤条件 GROUP BY …,…. HAVING 包含聚合函数的过滤条件 ORDER BY ….,…(ASC / DESC ) LIMIT …,….