oracle的级联查询connect by

本文介绍了Oracle数据库中ConnectBy技术的使用,展示了如何通过级联查询获取具有树形结构的菜单数据,包括startwith和connectby的配合、prior关键字的应用以及connect_by_isleaf伪列的使用。通过实例演示了查询子孙节点、排除自身节点以及父节点横向查询的方法。

connect by可以用于级联查询,常用于对具有树状结构的记录查询某一节点的所有子孙节点或所有祖辈节点。

造测试数据如下:

CREATE TABLE t_menu (
id int,
name varchar(20),
parent_id int)


INSERT INTO t_menu values(1,'菜单01',0);
INSERT INTO t_menu values(2,'菜单02',0);
INSERT INTO t_menu values(3,'菜单03',0);
INSERT INTO t_menu values(4,'菜单0101',1);
INSERT INTO t_menu values(5,'菜单0102',1);
INSERT INTO t_menu values(6,'菜单0103',1);
INSERT INTO t_menu values(7,'菜单010101',4);
INSERT INTO t_menu values(8,'菜单010201',5);
INSERT INTO t_menu values(9,'菜单010301',6);
INSERT INTO t_menu values(10,'菜单0201',2);
INSERT INTO t_menu values(11,'菜单0202',2);
INSERT INTO t_menu values(12,'菜单020101',10);
INSERT INTO t_menu values(13,'菜单020102',10);

select * from table [start with condition1] connect by [prior] id=parentid

--start with和connect by 先后顺序不影响结果

start with co

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大宇进阶之路

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值