编写高级 SELECT 语句 / SELECT 语句中的子查询 |
相关子查询是引用不列在其 FROM 子句中的表的列的子查询。该列可以在 Projection 子句或在 WHERE 子句中。要查找相关子查询引用的表,搜索列直到找到相关为止。
通常,相关子查询会降低性能。在子查询中使用表名或别名,这样就不会对所在的表产生疑问。
taba.col1 aa,bb,null tabb.col2 bb, null
select * from taba where col1 in (select col1 from tabb);
select * from taba where col1 in (select tabb.col1 from tabb);
那么将导致错误 error -217 column not found。
相关子查询的重要功能是,由于它取决于来自外部 SELECT 的值。所以必须重复执行它,对外部 SELECT 产生的每个值执行一次。非相关子查询只能执行一次。