ORACLE:start with ... connect by prior

Posted xinyueliu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ORACLE:start with ... connect by prior相关的知识,希望对你有一定的参考价值。

--start with ... connect by prior
--case1
select * from org o
--excute order=>first:start with connect by prior, then where condition
where o.flag = 1

--start with subNodId=‘...‘ connect by prior subNodeId = parentNodeId
start with o.org_code=10000
--start with parentNodId=‘...‘ connect by prior subNodeId = parentNodeId
start with o.org_parent_code=10000

connect by prior o.org_code=o.org_parent_code


--case2
select * from org o

--start with subNodeId=‘...‘ connect by subNodeId = prior parentNodeId
start with o.org_code=10000
--start with parentNodeId=‘...‘ connect by subNodeId = prior parentNodeId
start with o.org_parent_code=10000

connect by o.org_code=prior o.org_parent_code

--start with clause: 
--There is a little trick to traverse the starting conditions. 
--If you want to check the parent node, you can use the column of the child node and vice versa.

--connect by clause:
--Connection conditions:The key word priority, put together with the parentid of the parent node column, is to traverse toward the parent node;
--put priority together with the child node column subid, then traverse to the direction of the leaf node,

--to sum up: It doesn‘t matter which one puts in front of "=" to parentid and subid, the key point is who keep together with prior.



--CONNECT_BY_ROOT
--qry average salary for each team
select name, avg(sal)
fom
    (select CONNECT_BY_ROOT t.user_name as name, t.user_salary as salary
     from employee
     start with t.emp_no = 10000
     connet by prior t.emp_no = t.manager_no
    )
group by name

 

以上是关于ORACLE:start with ... connect by prior的主要内容,如果未能解决你的问题,请参考以下文章

Oracle Start With关键字

Oracle Start With关键字

Oracle start with connect by prior... 递归查询

Ruby Enumerator的各种迭代

Python with MYSQL - sytax problem

Oracle log_archive_start参数