Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 12.0.1 » SQL Anywhere 服务器 - SQL 的用法 » 查询和修改数据 » 使用子查询

 

嵌套的子查询

嵌套子查询是指嵌在另一子查询中的子查询。尽管对于您可以定义的嵌套子查询的层数没有限制,但与嵌套层数较少的查询相比,嵌套层数在三层或三层以上的查询的运行时间要长很多。

以下示例使用嵌套子查询来确定,在收费部门的产品订购当天发货的订单的订单 ID 和行 ID。

SELECT ID, LineID
FROM SalesOrderItems
WHERE ShipDate = ANY (
   SELECT OrderDate
   FROM SalesOrders
   WHERE FinancialCode IN (
      SELECT Code
      FROM FinancialCodes
      WHERE ( Description = 'Fees' ) ) );
ID LineID
2001 1
2001 2
2001 3
2002 1
... ...

在此示例中,最里面的子查询生成一列其说明是 "Fees" 的财务代码。

SELECT Code
FROM FinancialCodes
WHERE ( Description = 'Fees' );

下一个子查询查找其代码与最里面的子查询中选择的某一代码相匹配的产品的订单日期。

SELECT OrderDate
FROM SalesOrders
WHERE FinancialCode 
IN ( subquery-expression );

最后,最外面的查询查找在此子查询中找到的某一日期发运的订单的订单 ID 和行 ID。

SELECT ID, LineID
FROM SalesOrderItems
WHERE ShipDate = ANY ( subquery-expression );