1

这是文档:http: //download-east.oracle.com/docs/cd/B12037_01/server.101/b10759/queries003.htm

这是它描述的执行顺序:

  1. 如果存在连接,则首先评估连接,无论连接是在 FROM 子句中指定还是使用 WHERE 子句谓词。
  2. 评估 CONNECT BY 条件。
  3. 评估任何剩余的 WHERE 子句谓词。

我的问题是,上面的第 1 部分是否适用于嵌套查询。例如,如果我有:

select * from foo
where exists (select 'x' from bar
              where bar.foo_id = foo.foo_id 
              start with bar.id is null
              connect by prior bar.id = bar.parent_id)

where 子句中的连接是否立即执行,或者,因为 foo.foo_id 在此上下文中实际上是一个值,它是否在执行其余单值条件限制的第 3 部分执行?

4

1 回答 1

2

您发布的是相关子查询。

因为没有 JOIN - 将执行第 2 步和第 3 步:

2) 评估 CONNECT BY 条件。
3) 评估任何剩余的 WHERE 子句谓词

于 2010-08-02T17:05:53.840 回答