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



我有分层存储的数据,我想按顺序找到所有父母,其中有最深的孩子(有父母 -> 孩子 ->孙子 ->孙孙......等),目前我使用 connect by 子句来获取所有子项(直接和扩展子项..),但我需要获取具有最深子项路径的所有父 ID。

以下查询为我提供了1501605类别下的所有孩子

select category_id, parent_id 
from CATEGORY 
start with CATEGORY_ID = 1501605 
connect by PARENT_ID = PRIOR CATEGORY_ID

分层查询中的深度称为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
;

相关内容

最新更新