对于大多数的程序员 遇到级联查询的概率很高 今儿写一下级联查询的sql 网上也有一些 我做一下 自己的总结
CREATE TABLE 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');
--------------------------------------------------------------------------------------------------
ID NAME PID
1 10 0
2 11 1
3 20 0
4 12 1
5 121 2
----------------------------------------------------------------------------------------------------
从Root往树末梢递归
select * from TBL_TEST
start with id=1
connect by prior id = pid
注:(start with id = 1 表示的是 以1为根节点的树 从跟到叶的查询 此查询语句 为 一颗树 , PRIOR表示上一条记录,比如 CONNECT BY PRIOR ID=PID就是说上一条记录的ID是本条记录的PRAENTID,即本记录的父亲是上一条记录。 从而 判定 查询顺序 为 从跟到叶)
查询结果
ID NAME PID
1 10 0
2 11 1
5 121 2
4 12 1
-----------------------------------------------------------------------------------------------------
从末梢往树ROOT递归
select * from TBL_TEST
start with id=5
connect by prior pid = id
上一条记录的 父节点 为本记录的 节点 既 此查询出来的 为一颗倒树 既从叶到跟的顺序
运行结果:
ID NAME PID
5 12 1
2 1 1
1 1 0
本文 主要是对 http://www.poluoluo.com/jzxy/201004/81956.html 文章进行补充