在Oracle中获取具有最深子路径的父记录(意味着更多的孩子)

时间:2017-10-25 19:24:36

标签: sql oracle hierarchical-data recursive-query

我按层次顺序存储数据,我希望按顺序查找所有父母,其中有最深的孩子(有父母 - >孩子 - >大孩子 - >大孩子......等等),目前我使用connect by子句来获取所有孩子(直接和扩展的孩子......),但是我需要得到所有父母id最深的孩子路径。

以下查询为我提供了1501605类别

以下的所有儿童
select category_id, parent_id 
from CATEGORY 
start with CATEGORY_ID = 1501605 
connect by PARENT_ID = PRIOR CATEGORY_ID

1 个答案:

答案 0 :(得分:1)

分层查询中的深度称为level。如果您在级别(降序)上执行rank,则您将获得树中与最深级别相关联的所有节点。

select category_id, parent_id 
from (
    select category_id, parent_id, level, rank() over (order by level desc) as deepest
    from CATEGORY 
    start with CATEGORY_ID = 1501605 
    connect by PARENT_ID = PRIOR CATEGORY_ID
) where deepest = 1
;