我按层次顺序存储数据,我希望按顺序查找所有父母,其中有最深的孩子(有父母 - >孩子 - >大孩子 - >大孩子......等等),目前我使用connect by子句来获取所有孩子(直接和扩展的孩子......),但是我需要得到所有父母id最深的孩子路径。
以下查询为我提供了1501605类别
以下的所有儿童select category_id, parent_id
from CATEGORY
start with CATEGORY_ID = 1501605
connect by PARENT_ID = PRIOR CATEGORY_ID
答案 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
;