Oracle 查询,列出所有子女之前

标签: Oracle
发布时间: 2017/4/14 23:55:08
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我有一个表,其中有 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:

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

链接到小提琴

官方微信
官方QQ群
31647020