oracle的递归演算(树运算)start with org_id = '1' connect by prior parent_id = son_id
oracle的递归运算(树运算)start with org_id = '1' connect by prior parent_id = son_id;
1.前言
oracle的递归运算,在我们web页面的目录结构中会经常用到,据说是面试经常出的题目,而网上的一些东西说得都不是很明了,所以自己整理了一下,以下主要通过一个例子来说明,可以直接copy代码运行一下。
2.start with org_id = '条件1' prior parent_id = son_id; 的作用
这个就是为了把树形结构全部查出来,树的目录就放在同一张表中,如
1
|--2
|--3
|--4
|--5
|--6
|--7
|--8
|--9
|--10
这样的结构怎么查出来呢,这种特殊的查询,connect by perior就派上用场了 。
3.代码
结果:
1 0
1 2
1 3
1 4
4 5
5 6
1 7
7 8
8 9
9 10
4。总结
上面的例子,作用是实现遍历所有节点。如果prior 放在 connect by后面的话,那就是从上查找。
1.前言
oracle的递归运算,在我们web页面的目录结构中会经常用到,据说是面试经常出的题目,而网上的一些东西说得都不是很明了,所以自己整理了一下,以下主要通过一个例子来说明,可以直接copy代码运行一下。
2.start with org_id = '条件1' prior parent_id = son_id; 的作用
这个就是为了把树形结构全部查出来,树的目录就放在同一张表中,如
1
|--2
|--3
|--4
|--5
|--6
|--7
|--8
|--9
|--10
这样的结构怎么查出来呢,这种特殊的查询,connect by perior就派上用场了 。
3.代码
create table TESTTEMP ( parent_ID VARCHAR2(30), son_ID VARCHAR2(30) ); insert into TESTTEMP values('1','0'); insert into TESTTEMP values('1','2'); insert into TESTTEMP values('1','3'); insert into TESTTEMP values('1','4'); insert into TESTTEMP values('1','7'); insert into TESTTEMP values('4','5'); insert into TESTTEMP values('5','6'); insert into TESTTEMP values('7','8'); insert into TESTTEMP values('8','9'); insert into TESTTEMP values('9','10'); commit; select * from TESTTEMP start with parent_ID='1' connect by parent_ID= prior son_ID
结果:
1 0
1 2
1 3
1 4
4 5
5 6
1 7
7 8
8 9
9 10
4。总结
上面的例子,作用是实现遍历所有节点。如果prior 放在 connect by后面的话,那就是从上查找。