oracle如何查询任意节点下的所有子节点
表结构简单T(id,parentId),如图比如说输入A节点ID(001),能查询到DEG三个节点,输入B节点ID(001001)能查询到DE,CF的话能查询到G,脚本如...
表结构简单T(id,parentId),如图
比如说输入A节点ID(001),能查询到DEG三个节点,输入B节点ID(001001)能查询到DE,CF的话能查询到G,脚本如何写?只查询叶子节点,不查询类似BCF这样有下层节点的节点。 展开
比如说输入A节点ID(001),能查询到DEG三个节点,输入B节点ID(001001)能查询到DE,CF的话能查询到G,脚本如何写?只查询叶子节点,不查询类似BCF这样有下层节点的节点。 展开
2个回答
展开全部
向下递归+叶子节点过滤就行了,例子:
--模拟数据
with tmp(id,pid) as
(SELECT 'A','' FROM DUAL UNION ALL
SELECT 'B','A' FROM DUAL UNION ALL
SELECT 'C','A' FROM DUAL UNION ALL
SELECT 'D','B' FROM DUAL UNION ALL
SELECT 'E','B' FROM DUAL UNION ALL
SELECT 'F','C' FROM DUAL UNION ALL
SELECT 'G','F' FROM DUAL )
SELECT ID FROM TMP T
WHERE CONNECT_BY_ISLEAF=1 --只显示叶子节点
START WITH T.ID='A' --递归起点,即查询条件
CONNECT BY PRIOR ID=PID --递归条件,向下递归
更多追问追答
追问
那如果用DB2的语法怎么写?
追答
没用过DB2..
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询