正如我们所看到的,子查询始终出现在查询的 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 |
| ... | ... |
在此示例中,最里面的子查询生成一列其说明是"Fees"的财务代码。
SELECT code FROM fin_code WHERE (description = 'Fees')
下一个子查询查找其代码与最里面的子查询中选择的某一代码相匹配的产品的订单日期。
SELECT order_date FROM sales_order WHERE fin_code_id IN (subquery)
最后,最外面的查询查找在此子查询中找到的某一日期发运的订单的订单 ID 和行 ID。
SELECT id, line_id FROM sales_order_items WHERE ship_date = ANY (subquery)
嵌套的子查询还可以有三层以上的嵌套层次。尽管对嵌套的最大层次数没有限制,但与嵌套层次较少的查询相比,嵌套层次在三层或三层以上的查询的运行时间要长得多。
SQL Anywhere Studio 9.0.2
版权所有 © 1989–2005 Sybase, Inc. 部分版权所有 © 2001–2005 iAnywhere Solutions, Inc. 保留所有权利。