GBase 8s V8.8 SQL 指南:教程-6.3.1

6.3.1 相关子查询
相关子查询是引用不列在其 FROM 子句中的表的列的子查询。该列可以在 Projection 子
句或在 WHERE 子句中。要查找相关子查询引用的表,搜索列直到找到相关为止。
通常,相关子查询会降低性能。在子查询中使用表名或别名,这样就不会对所在的表产生
疑问。
数据库服务器将使用外查询来获取值。例如:如果表 taba 具有列 col1,表 tabb 具有列 col2,
并且它们包含以下内容:
taba.col1 aa,bb,null
 tabb.col2 bb, null
那么查询为:
select * from taba where col1 in (select col1 from tabb);
那么结果可能会毫无意义。数据库服务器将提供 taba.col1 中所有的值,并接着它们
与 taba.col1 进行比较(外查询 WHERE 子句)。这将返回所有的行。通常使用子查询从内
表返回列值。如果查询写成:
select * from taba where col1 in (select tabb.col1 from tabb);
那么将导致错误 error -217 column not found。
相关子查询的重要功能是,由于它取决于来自外部 SELECT 的值。所以必须重复执行它,
对外部 SELECT 产生的每个值执行一次。非相关子查询只能执行一次。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值