[Oracle整理]树形查询(start with connect by)

本文详细介绍了在Oracle9数据库中如何使用startwith...connectby子句进行递归查询以实现树形结构数据的展示。通过创建测试表、添加数据和实现查询,展示了如何自顶向下或自底向上地获取树形结构的数据,并特别强调了Level关键字的作用。

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

说明:本内容是工作用到的知识点整理,来自工作中和网络。
代码于Oracle9上测试。

 

树形查询(start with connect by)

作用:

Start with...Connect By子句

递归查询一般用于一个表维护树形结构的应用

语法:

SELECT …

CONNECT BY  PRIOR列名1=列名2 (列名1=PRIOR列名2 )

[START WITH]

Where condition

注意:

PRIOR运算符在一侧表示父节点,在另一侧表示子节点,从而确定查找树结构是的顺序是自顶向下还是自底向上

CONNECT BY PRIOR ID=PRAENTID :上一条记录的ID是本条记录的PRAENTID,即本记录的父亲是上一条记录

例子:

要实现的效果

clip_image002

step1创建测试表

-- 1
create table xx_test2
(
folder_id number,
folder_name varchar2(255),
parent_id number
)

setp2添加数据

-- 2
insert into xx_test2 values(1,'C',10000);
insert into xx_test2 values(2,'Windows',1);
insert into xx_test2 values(3,'System32',2);
insert into xx_test2 values(4,'Config',3);

step3实现

-- 3
SELECT folder_id, folder_name, parent_id, LEVEL
  FROM xx_test2
CONNECT BY PRIOR folder_id = parent_id
 START WITH folder_id = (SELECT folder_id
                           FROM (SELECT folder_id, parent_id
                                   FROM xx_test2
                                 CONNECT BY folder_id = PRIOR parent_id
                                  START WITH folder_id = 1)
                          WHERE parent_id = 10000)
 ORDER BY LEVEL

clip_image004

注意:

Level是关键字,可以直接使用。表示树形的层级,即深度。

转载于:https://www.cnblogs.com/htht66/archive/2012/01/29/2330965.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值