在子查询的正文中,通常需要引用主查询的活动行中的列的值。
对主表中的列或表达式的引用被称作外部引用,并且这种子查询是相关的。
如果子查询结果至少包含一行,则EXISTS条件为TRUE;如果子查询结果一行也不包含,则条件为FALSE。
在子查询中对这些列的多次引用不会使这些函数被计算多次。
两种查询可以用于UPDATE语句的WHERE子句中:标量子查询和表子查询。
首先需要将标量子查询的结果传送到联邦服务器。
IN操作符是可以用于表子查询的四个SQL操作符之一。
如果子查询(必须含有一列)返回一行,则该行的值将与表达式进行比较。
如果初始子查询的列与递归子查询的列具有不同的域,则可能需要进行转换。
subquery或expression使用IN或NOTIN与test_expression比较后返回的所有空值都将返回UNKNOWN。
常量、函数以及由一个或多个运算符连接的列名、常量和函数的任意组合,或者是子查询。
如果一个子查询中引用了包含查询语句的一个或多个字段,则该子查询就称为相关性子查询。
SHIP3操作符包含一个语句,该语句表明标量子查询的结果放在一个主机变量中。
以上查询包含一个相关子查询,因为主查询和子查询依靠于同一个表,即employees表。
最后一节还描述了ALL、EXISTS和SOME或ANY谓词,这些谓词可用于表达子查询结果上的条件。
主查询不包含GROUPBY子句并且不是汇总查询,或者子查询恰好返回一个值。
子查询及其函数执行的次数会因优化器选择的访问路径的不同而异。
第一个优化解除了职员与sales_order表之间连接中的子查询嵌套。
这个扩展指定联接,可在WHERE子句中取代子查询来标识要删除的行。
该表达式可以是一个常量或一个列名,而列表可以是一组常量,通常为一个子查询。
数据库服务器会自动尝试转换由递归子查询返回的值,以便与初始查询的那些值匹配。
在这里,错误1242表示查询操作失败,由于子查询有问题。
该语句中前面的子查询无法独立于外部查询进行计算。
与子查询一起使用,用于测试是否存在子查询返回的行。
这里我们所做的惟一更改就是去掉了原始查询中的子查询。
指定表、视图、用户定义函数或关联数据列的子查询的名称。
EXISTS在WHERE子句中使用EXISTS可以指示子查询至少应该返回一行。