嵌套查询的分类-相关子查询与不相关子查询

本文介绍了嵌套查询中的相关子查询和不相关子查询,详细解析了各种类型的子查询使用,包括any/all比较运算、带in/not in的查询以及exists的使用。通过实例展示了如何在SQL查询中有效利用子查询来筛选数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

子查询一定要用()包围

 一.一个select...From...Where查询语句块可以嵌套在另一个select...From...Where查询块的Where子句
中,称为嵌套查询。外层查询称为父查询,主查询。内层查询称为子查询,从查询。
子查询可以嵌套多层,子查询查询到的结果又成为父查询的条件。子查询中不能有order by分组语句。(因为子查询只是个中间结果,分组等是作用于最后的结果拥有显示
先处理子查询,再处理父查询。

 

二不相关子查询

 

1简单嵌套查询
    
查询选修课程号为'101'并且成绩高于学生号为'9501101'的所有学生的成绩.
select * from sclass
where cno='101' and degree>=
(select degree from sclass where sno='9501101'and cno='101')  <

在 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)` 会使用这个平均工资进行过滤。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值