sql基础语法,关联子查询

本文介绍了如何在SQL中使用关联子查询来处理多行结果的问题。关联子查询作为标量子查询的扩展,允许在有效范围内进行更复杂的查询操作。文章通过实例解析了关联子查询的语法和注意事项,强调了关联名的使用范围及其执行顺序,帮助读者掌握这一高级查询技巧。

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

前面我们学过标量子查询,返回值只能是一行结果,在面对需要返回多行结果时会束手无策,解决办法就是使用关联子查询。
01关联子查询
所谓关联子查询,就是在有效范围内进行的子查询。
注意这里的有效范围含义:超过这个范围将使查询无效
关联子查询可以理解为一个桥梁,连接两个或者n个标量子查询。
格式:表名.列名
例一:

SELECT product_id,product_name,sale_price
FROM PRODUCT AS P1
WHERE sale_price>(SELECT AVG(sale_price)
                   FROM PRODUCT AS P2
                   WHERE P1.product_type=P2.product_type
 GROUP BY product_type)

在这里插入图片描述
例二

SELECT product_id,product_name,sale_price
FROM PRODUCT AS P1
WHERE P1.product_type=P2.product_type
AND sale_price>(SELECT AVG(sale_price)
                   FROM PRODUCT AS P2
                   GROUP BY product_type)

注意:
这是一种典型错误,结合条件一定要写到子查询语句中,否则无法取得沟通作用。
因为关联名是有使用范围的:子查询内部设定的关联名,只能在子查询内部使用。说白了就是内部可以看到外部,外部看不到内部。
本例中p2仅在内部有效,p1仅在外部有效。
sql语言会按照先内部再外部的顺序执行,如果是在外部调用内部函数p2只会得到一个无效的表

使用关联子查询也是对集合进行切分的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值