Oracle_查出最上层节点(或指定层级)

前言

场景:根据当前节点人员的最上层人员,或是指定层级人员,常用于推广关系中人员关系查询。
Oracle有封装好的函数,封装了递归或者循环嵌套的复杂逻辑,直接使用即可,以下为代码和注释;

select m.id,
       m.parentid,
       m.name,
       connect_by_root(m.id) root_id, -- 找到指定节点的ID(最上级的id)
       connect_by_root(m.name) root_name -- 找到指定节点的name(最上层的name)
 from marketer  m
where m.name = '李大' --节点起始点(即你想要找谁的最上级),批量查询直接使用in关键字即可
start with m.layer= 1 -- 指定到根节点(可以改变层级数,1代表根节点,2代表次节点,以此类推),注意,此字段根据自己的表修改,找到代表层级的字段即可。
connect by prior m.id= m.parentid --条件限制,节点间关联的条件

猜你喜欢

转载自blog.csdn.net/weixin_40135610/article/details/84870625