基本为转载,稍加了一些内容。
在SELECT命令中使用CONNECT BY和START WITH子句可以查询表中的树型结构关系。其命令格式如下:
SELECT * from
CONNECT BY {PRIOR列名1=列名2|列名1=PRIOR列名2}
[START WITH];
其中:CONNECT BY子句说明每行数据将是按层次顺序检索,并规定将表中的数据连入树型
Start with...Connect By子句递归查询一般用于一个表维护树形结构的应用。
创建示例表:
CREATE TABLE TBL_TEST
(
);
插入测试数据:
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');
INSERT INTO TBL_TEST(ID, NAME,PID) VALUES('6','333','2');
从Root往树末梢递归
select * from TBL_TEST
运行截图:
从末梢往树ROOT递归
select * from TBL_TEST
-------------------------------------------------------------------------------------
SELECT d.*
START WITH d.detail_id = 7608
CONNECT BY PRIOR d.from_quota_id = d.to_quota_id
UNION
START WITH d.detail_id = 7608
CONNECT BY PRIOR d.to_quota_id = d.from_quota_id