Michał Herman Asked: 2015-04-18 07:28:31 +0800 CST2015-04-18 07:28:31 +0800 CST 2015-04-18 07:28:31 +0800 CST connect by 真的有效吗?它是如何乘以行的? 772 我知道(在高抽象层次上)Oracle 中的层次结构是如何工作的,但我不明白这一点。发出以下查询时: select rownum-1 as num from dual 结果我得到了一排。 以下查询: select rownum-1 as num from dual connect by level<=1000 正在返回 1000 行。 这个查询的背景到底发生了什么?Oracle 引擎在尝试解析层次结构时如何乘以行。 oracle hierarchy 1 个回答 Voted Best Answer mustaccio 2015-04-18T09:16:38+08:002015-04-18T09:16:38+08:00 如果您查看构造递归查询的标准 SQL 方式,您会看到如下内容: with t (num) as ( select rownum-1 num from dual union all select num+1 from t where num+1 < 10 ) select * from t; SQLFiddle:http ://sqlfiddle.com/#!4/9eecb/4371/0 如您所见,它首先从表中选择一行DUAL,然后递归地将 aUNION ALL应用于该行,同时限制条件保持为真。该CONNECT BY构造只是向您隐藏了此 SQL 管道。 如果您单击上面小提琴中的执行计划链接,您会看到它。
如果您查看构造递归查询的标准 SQL 方式,您会看到如下内容:
SQLFiddle:http ://sqlfiddle.com/#!4/9eecb/4371/0
如您所见,它首先从表中选择一行
DUAL
,然后递归地将 aUNION ALL
应用于该行,同时限制条件保持为真。该CONNECT BY
构造只是向您隐藏了此 SQL 管道。如果您单击上面小提琴中的执行计划链接,您会看到它。