通过数据库编程进行递归(Oracle)

本文提供了一个Oracle数据库中使用递归SQL查询的实例,展示了如何通过递归查询获取树形结构数据,从指定的父节点开始遍历子节点,适用于理解和实践复杂的数据关系查询。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、用于测试数据及其结构和生成该测试数据的sql语句如下:
1、测试数据
nodeId     parentId
---------- ----------
A01        A
A02        A
A03        A
A0101      A01
A0102      A01
A0201      A02
A0202      A02
B01        B
B02        B
B0201      B02
B0202      B02
B020101    B0201
B020102    B0201

 

2、建表及生成数据的sql语句
create table tree
(
    nodeId varchar2(10) not null,
    parentId varchar2(10) not null
);

insert into tree
select 'A01', 'A' from dual union all
select 'A02', 'A' from dual union all
select 'A03', 'A' from dual union all
select 'A0101', 'A01' from dual union all
select 'A0102', 'A01' from dual union all
select 'A0201', 'A02' from dual union all
select 'A0202', 'A02' from dual union all
select 'B01', 'B' from dual union all
select 'B02', 'B' from dual union all
select 'B0201', 'B02' from dual union all
select 'B0202', 'B02' from dual union all
select 'B020101', 'B0201' from dual union all
select 'B020102', 'B0201' from dual;

 

二、递归
1、递归sql
select parentId, nodeId
from tree
start with parentId = 'B02'
connect by parentId = prior nodeId
order by parentId, nodeId;

 

2、执行结果
parentId   nodeId
B02 B0201
B02 B0202
B0201 B020101
B0201 B020102

指定parentId时要注意,oracle是区分大小写的。

转载于:https://www.cnblogs.com/aspsmile/archive/2008/08/05/1260745.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值