Oracle如何使用“查询”评估分层查询;按rownum连接<;=";

Oracle如何使用“查询”评估分层查询;按rownum连接<;=";,oracle,Oracle,在这个查询的结果中,B和C只有1个值(级别?) 但是A有3个值和级别(ID_路径结果只包含A) 我知道使用“按级别连接”是一种层次结构,所以我知道它将生成n+n^n列 但是我不知道为什么按rownum连接只显示这些值 请帮助我T您的分层查询根据标准将层次结构中的一行连接到另一行(执行rownum 1) 其次,必须了解,在Oracle中,分层查询是使用深度优先搜索构建的 您的起始行集是: Result ID LVL ROWNUM LV_PATH ID_PATH

在这个查询的结果中,B和C只有1个值(级别?) 但是A有3个值和级别(ID_路径结果只包含A)

我知道使用“按级别连接”是一种层次结构,所以我知道它将生成n+n^n列

但是我不知道为什么按rownum连接只显示这些值


请帮助我T

您的分层查询根据标准将层次结构中的一行连接到另一行(执行
rownum 1

其次,必须了解,在Oracle中,分层查询是使用深度优先搜索构建的

您的起始行集是:

Result
  ID      LVL   ROWNUM     LV_PATH     ID_PATH
   A       1      1         ->1          ->A
   A       2      2         ->1->2       ->A->A
   A       3      3         ->1->2->3    ->A->A->A
   B       1      4         ->1          ->B
   C       1      5         ->1          ->B

[why B and C has 1 level !?]

查询生成的第一行是:

1. 'A'
2. 'B'
3. 'C'

查询现在返回并探测原始行集中该行的任何直接“子项”。它找到第一条记录
'A'
。确定这一行是否是第一行的子行的条件是
rownum,这非常适合理解wow:▷  谢谢你的完美回答!
1. 'A'
2. 'B'
3. 'C'
1. 'A' rownum=1 level=1
2. 'A' -> 'A' rownum=2 level=2
3. 'A' -> 'A' -> 'A' rownum=3 level=3
4. 'B' rownum=4 level=1
5. 'C' rownum=5 level=1