子查询和相关子查询有什么区别?

子查询

内部查询首先执行,外部查询依赖内部查询输出。

相关子查询

先执行外层查询,内层查询依赖外层查询结果。

相关子查询是子查询部分引用来自外部查询的值的地方。


SELECT emp1.emp_id, emp1.last_name, emp1.job_id, emp1.department_id from employee emp1 
WHERE EXISTS (SELECT ‘X’ FROM employee emp2 WHERE emp2.manager_id = emp1.emp_ID);

由于在子查询中引用了 emp1.emp_ID,因此是相关子查询。
子查询为外部查询处理的每一行计算一次。


SELECT e1.employee_number, e1.name FROM employee e1 
WHERE e1.salary > (SELECT avg(e2.salary) FROM e2.employee);

不是相关子查询,因为子查询不引用查询外部的值。

日期:2020-06-02 22:17:37 来源:oir作者:oir