来自具有2列(childName,parentName)的Oracle表
a, b
b, c
c, d
m, n
x, y
我想让所有父母等级从孩子'a'开始,并将其返回到下表
a, b
a, c
a, d
b, c
b, d
c, d
我尝试过(已更新)
SELECT CONNECT_BY_ROOT childName AS childName, parentName
FROM table_parents
START WITH childName IN (
SELECT 'a' as parentName FROM DUAL
UNION
SELECT parentName FROM (
SELECT CONNECT_BY_ROOT childName AS childName, parentName
FROM table_parents
START WITH childName = 'a'
CONNECT BY PRIOR parentName = childName
)
)
CONNECT BY PRIOR parentName = childName;
但我想知道是否有更好的。
答案 0 :(得分:0)
我会做这样的事情:
select childname, connect_by_root parentname as parentname
from table_parents
start with parentname in (
select parentname
from table_parents
start with childname = 'a'
connect by childname = prior parentname
)
connect by parentname = prior childname
;