0

我正在尝试处理涉及自关系表的查询。

我有这些行:

ID    Parent_ID

1     null
2     1
3     2
4     3
.
.
.

“孩子”不是同一个父亲。每个“父亲”只有一个孩子。我有最后一个“孩子”的 ID。(例如,我的 ID = 4)..我想得到这个:

  1     null
  2     1
  3     2
  4     3

鉴于父 ID 可能不是按顺序排列的,我如何检索这些行。

提前致谢。

4

2 回答 2

3

Oracle 支持递归查询:

SELECT t.id, t.parent_id
FROM t 
START WITH t.id = 4
CONNECT BY PRIOR t.parent_id = t.id

sqlfiddle在这里

于 2013-04-18T19:13:29.517 回答
0

另一种选择是使用递归 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

SQL 小提琴演示

于 2013-04-18T19:19:10.773 回答