从级别双重连接中选择级别< = 4内部如何工作

时间:2017-02-12 06:04:55

标签: oracle

我知道级别使用以及分层查询,但我无法理解如何分析它:

(select level from dual connect by level<=4) 

查询在内部工作以及如何生成数字。

为了生成数字,我有另一种方式:

select r from (select rownum r from all_objects) e where r<=10 

它将生成前10个数字。但我无法理解内部的水平如何。

请解释原因!

1 个答案:

答案 0 :(得分:0)

这构建了分层查询。 connect by定义了如何从父节点走到其子节点及其子节点。在这种情况下,您的连接定义仅在level >= 4时。这里的诀窍是level是伪列,如rownum,所以条件只能通过提供的小于等数来满足(在这种情况下为4)。您也可以使用rownum执行此操作:

select level from dual connect by rownum <= 4; 

Level用于计算连接的深度,因此父级将为1,子级为2,子级为3的子级等。因此,将其视为分层查询的rownum。