【问题标题】:Oracle: Recursively self referential join with nth level recordOracle:递归自引用连接与第 n 级记录
【发布时间】:2015-06-24 07:00:00
【问题描述】:

我有这样的自引用表:

id   |level | parent_id
----------------------
1    |1     |null
2    |1     |null
3    |2     |1
4    |2     |1
5    |2     |2
6    |3     |5
7    |3     |3
8    |4     |7
9    |4     |6
------------------------

结果中我需要第 n 级父级。例如二级家长

id   |level | parent_id| second_level_parent_id
------------------------------------------------
1    |1     |null      |null
2    |1     |null      |null
3    |2     |1         |null
4    |2     |1         |null
5    |2     |2         |null
6    |3     |5         |5
7    |3     |3         |3
8    |4     |7         |3
9    |4     |6         |5
-------------------------------------------------

【问题讨论】:

标签: sql oracle self-referencing-table


【解决方案1】:

这对我有用。

SELECT m.*,
  CONNECT_BY_ROOT id AS second_level_parent_id
FROM my_table m
WHERE CONNECT_BY_ROOT level =2
  CONNECT BY prior id    = parent_id;

感谢@Jozef Dúc

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-09
    • 1970-01-01
    • 2017-05-28
    • 1970-01-01
    • 1970-01-01
    • 2014-12-13
    相关资源
    最近更新 更多