前言
场景:根据当前节点人员的最上层人员,或是指定层级人员,常用于推广关系中人员关系查询。
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 --条件限制,节点间关联的条件