前面我们学过标量子查询,返回值只能是一行结果,在面对需要返回多行结果时会束手无策,解决办法就是使用关联子查询。
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只会得到一个无效的表
使用关联子查询也是对集合进行切分的。
本文介绍了如何在SQL中使用关联子查询来处理多行结果的问题。关联子查询作为标量子查询的扩展,允许在有效范围内进行更复杂的查询操作。文章通过实例解析了关联子查询的语法和注意事项,强调了关联名的使用范围及其执行顺序,帮助读者掌握这一高级查询技巧。
5357

被折叠的 条评论
为什么被折叠?



