相关子查询与不相关子查询的区别?
时间: 2023-10-26 19:07:13 浏览: 36
在 SQL 查询中,子查询(Subquery)是指嵌套在主查询中的查询语句。子查询可以用于过滤数据、计算聚合函数、作为表达式等多种场景。子查询可以分为相关子查询和不相关子查询两种。
不相关子查询是指子查询与主查询之间没有任何联系,子查询独立于主查询。不相关子查询在主查询执行之前就会被单独执行,得到一个结果集,主查询再使用这个结果集进行过滤或计算。例如:
```
SELECT name FROM employees WHERE salary > (SELECT AVG(salary) FROM employees);
```
上述语句中,不相关子查询 `(SELECT AVG(salary) FROM employees)` 与主查询 `SELECT name FROM employees` 没有任何联系,子查询会被先执行,得到平均工资,然后主查询中的条件 `salary > (SELECT AVG(salary) FROM employees)` 会使用这个平均工资进行过滤。
相关子查询是指子查询与主查询之间存在联系,子查询的结果依赖于主查询的某些条件。相关子查询在主查询执行时,每次处理一条记录时都会执行一次子查询。例如:
```
SELECT name FROM employees e WHERE salary > (SELECT AVG(salary) FROM employees WHERE department = e.department);
```
上述语句中,相关子查询 `(SELECT AVG(salary) FROM employees WHERE department = e.department)` 依赖于主查询中的条件 `WHERE department = e.department`,每次处理一条记录时都会根据当前记录的部门执行一次子查询,得到该部门的平均工资,然后主查询中的条件 `salary > (SELECT AVG(salary) FROM employees WHERE department = e.department)` 会使用这个平均工资进行过滤。
相关推荐
![](https://img-home.csdnimg.cn/images/20210720083646.png)
![pptx](https://img-home.csdnimg.cn/images/20210720083543.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)