Oracle查询在子项之前列出所有父项

时间:2013-09-16 07:44:33

标签: oracle parent children

我的表格中包含child#parent#,如下所示:

child# |  parent#
------------------
10     | NULL
20     | NULL
2      | 1
1      | 10 
50     | 10
6      | 5 
5      | 2

没有数字排序,即1可以是10的父级,10可以是20的父级。

我想要一个ORACLE SQL查询,它首先列出所有父项,然后是它们的子项。

我想要一个像下面这样的临时表:

child# | parent#
----------------
10     | NULL
20     | NULL
1      | 10
2      | 1 
50     | 10
5      | 2 

我想遍历这个临时表并处理每一行,所以我需要确保在子行之前列出父表。

1 个答案:

答案 0 :(得分:1)

select level,child,parent
from your_table
start with t2.parent is null
connect by prior t2.child = t2.parent
order by level

<强>输出

LEVEL   CHILD   PARENT
1       10      (null)
1       20      (null)
2       1       10
2       50      10
3       2       1
4       5       2
5       6       5

链接到 fiddle