Oracle树形结构下根据子节点查询所有上层父节点直至根节点的实现方案
Oracle 层次查询向上遍历父节点实现方案
你可以通过调整CONNECT BY的关联方向实现从子节点向上遍历所有祖先节点,具体代码如下:
SELECT lpad(' ', level*3, ' ') || family_member as who, level FROM family START WITH family_member = 'Sally' CONNECT BY family_member IN (PRIOR MOTHER, PRIOR FATHER) -- 若不需要返回查询起点Sally本身,可取消注释下方过滤条件 -- WHERE level > 1 ORDER BY level;
逻辑说明
START WITH family_member = 'Sally':指定遍历的起点为需要查询的子节点CONNECT BY family_member IN (PRIOR MOTHER, PRIOR FATHER):要求当前层级的家庭成员,等于上一层级(子节点)的母亲或父亲,实现向上查找父节点的遍历逻辑- 遍历会自动在某一层级的父母字段均为
null时停止,返回所有祖先节点
内容的提问来源于stack exchange,提问作者Zakaro
相关产品推荐
相关产品推荐

