递归 查询父节点

 

基本语法: 

select ... from tablename start with 条件1 

connect by 条件2 

where 条件3;

 

例:

 

-- 查询出节点 'si' 的父节点,以及父节点的父节点,直到根。
select * from tableName
start with child = 'si'
connect by prior father = child;
 

解释:

将一个树状结构存储在一张表里,表中存在两个字段: child,parent

按字面意思来,每条记录中的parent为child的父节点,这样就可以形成一个树状结构。 

用上述语法的查询可以取得这棵树的所有记录。 

 

条件1 是结点的限定语句,上例子中是叶子节点限定语句。

条件2 是连接条件,上例子中意思是:(prior)前一条记录中的father节点作为下一条记录的child节点

条件3 不解释

 

猜想执行过程:

 

-- 初始化

declare nodeId ...

set nodeId = 'si'

 

-- 查询

select * from tableName

where child = nodeId

 

-- 赋值

 

set nodeId = (select father from tableName where child = nodeId)

 

-- Jump to 查询

 

中间结果:

child father

 si     si0

 

child father

 si     si0

 si0    si1

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值