2

我有一张桌子,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 

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

4

1 回答 1

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

链接到小提琴

于 2013-09-16T08:28:13.447 回答