我正在尝试处理涉及自关系表的查询。
我有这些行:
ID Parent_ID
1 null
2 1
3 2
4 3
.
.
.
“孩子”不是同一个父亲。每个“父亲”只有一个孩子。我有最后一个“孩子”的 ID。(例如,我的 ID = 4)..我想得到这个:
1 null
2 1
3 2
4 3
鉴于父 ID 可能不是按顺序排列的,我如何检索这些行。
提前致谢。
Oracle 支持递归查询:
SELECT t.id, t.parent_id
FROM t
START WITH t.id = 4
CONNECT BY PRIOR t.parent_id = t.id
sqlfiddle在这里。
另一种选择是使用递归 cte:
with cte (id, parent_id) as (
select id, parent_id
from yourtable
where id = 4
union all
select y.id, y.parent_id
from yourtable y
join cte c on y.id = c.parent_id
)
select * from cte order by id