相关子查询是指引用了外部查询中出现的表的列的子查询。
- 子查询要依赖于外部查询,不能独立地调用运行它。
- 在逻辑上,子查询会为每个外部行单独计算一次
- 子查询需要为外部查询运行的行数据量较大时,性能降低会很明显。
SELECT * FROM employee a
where a.employee_id =
(SELECT MAX(b.employee_id) from salary b
where b.salary >2000 and a.employee_id =b.employee_id)
子查询调用了 employee表中字段 所以无法独立执行
相关子查询会对外部查询中的每个 employee_id进行一次运算当salary大于2000时取出employee_id,如果一个员工多项工资高于2000分,则通过MAX(employee_id)只取其中一个employee_id以满足“=”运算符的规则。
每一次相关子查询的运算都是相互独立、互不干扰的,甚至可以将其理解为多次独立子查询。
学习参考资料:《跟韩老师学 SQL Server 数据库设计与开发》