【问题标题】:select level from dual connect by level<=4 how it works internally [duplicate]通过级别<=4从双重连接中选择级别它如何在内部工作[重复]
【发布时间】:2022-02-11 00:41:41
【问题描述】:

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

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

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

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

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

它将生成前 10 个数字。但我无法理解 level 在内部是如何工作的。

请解释原因!

【问题讨论】:

    标签: oracle


    【解决方案1】:

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

    select level from dual connect by rownum <= 4; 
    

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

    【讨论】:

      猜你喜欢
      • 2013-05-13
      • 2022-10-12
      • 2020-08-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-12
      相关资源
      最近更新 更多