Collection Contents 上一页 下一页 PDF

ASA SQL 用户指南

使用子查询

嵌套的子查询


正如我们所看到的,子查询始终出现在查询的 HAVING 子句或 WHERE 子句中。子查询自身也可以包含 WHERE 子句和/或 HAVING 子句,同样,子查询也可以出现在其它子查询中。位于其它子查询内的子查询被称为嵌套的子查询

示例 

如果在某一天有人在收费部门中订购了产品,并且同一天发运了一些订单,则请列出这些订单的订单 ID 和行 ID。

SELECT id, line_id
FROM sales_order_items
WHERE ship_date = ANY (
   SELECT order_date
   FROM sales_order
   WHERE fin_code_id IN (
      SELECT code
      FROM fin_code
      WHERE (description = 'Fees')))
id line_id
2001 1
2001 2
2001 3
2002 1
... ...
有关嵌套子查询的说明 
SELECT code
FROM fin_code
WHERE (description = 'Fees')
SELECT order_date
FROM sales_order
WHERE fin_code_id IN (subquery)
SELECT id, line_id
FROM sales_order_items
WHERE ship_date = ANY (subquery)

嵌套的子查询还可以有三层以上的嵌套层次。尽管对嵌套的最大层次数没有限制,但与嵌套层次较少的查询相比,嵌套层次在三层或三层以上的查询的运行时间要长得多。


Collection Contents 上一页 下一页 PDF