Oracle-递归查询

原文:http://blog.csdn.net/tianlincao/article/details/7258383

1. 建表

CREATE TABLE USERS.TBL_TEST
(
       ID    NUMBER,
       NAME  VARCHAR2(100 BYTE),
       PID   NUMBER DEFAULT 0
);

INSERT INTO TBL_TEST(ID,NAME,PID) VALUES('1','10','0');
INSERT INTO TBL_TEST(ID,NAME,PID) VALUES('2','11','1'
INSERT INTO TBL_TEST(ID,NAME,PID) VALUES('3','20','0');
INSERT INTO TBL_TEST(ID,NAME,PID) VALUES('4','12','1');
INSERT INTO TBL_TEST(ID,NAME,PID) VALUES('5','121','2');


2. 语法

select * from …. where [结果过滤条件语句]
start with [and起始条件过滤语句]
connect by prior [and中间记录过滤条件语句]


3. 例子

查找所有下级,包括当前条件数据

select * from tbl_test start with id = 1 connect by prior id = pid

注意:此sql能查找id=1的数据的所有下级,包括id=1的数据,写sql语句时要注意,因为是从id开始查找下级,所以connect by prior 子句的条件是id=pid


查询所有下级,不包括当前条件数据

select * from tbl_test start with pid = 1 connect by prior id = pid


查找所有上级

select * from tbl_test start with id = 5 connect by prior pid = id

因为是从id开始查找上级,所以connect by prior 子句的条件是pid=d

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值