在子查询的正文中,通常需要引用主查询的活动行中的列的值。请看以下查询:
SELECT name, description FROM product WHERE quantity < 2 * ( SELECT avg(quantity) FROM sales_order_items WHERE product.id = sales_order_items.prod_id)
此查询提取其库存数量少于该产品的平均订购数量两倍的产品(具体而言,即由主查询中的 WHERE 子句测试的产品)的名称和说明。此子查询通过扫描 sales_order_items 表执行此任务。但在子查询的 WHERE 子句中,product.id 列引用主查询(而不是子查询)的 FROM 子句中指定的表中的列。由于 SQL 遍历 product 表中的每一行,因此,它在对子查询的 WHERE 子句求值时使用当前行的 id 值。
此子查询中的 product.id 列是外部引用的一个例子。使用外部引用的子查询称为相关子查询。外部引用是一个列名称,该列名称不引用该子查询的 FROM 子句中的任何表的任何列,而是引用主查询的 FROM 子句指定的表的列。如上例所示,外部引用中的列的值来自主查询当前测试的行。
SQL Anywhere Studio 9.0.2
版权所有 © 1989–2005 Sybase, Inc. 部分版权所有 © 2001–2005 iAnywhere Solutions, Inc. 保留所有权利。