oracle递归层级查询 start with connect by prior

递归层级查询:start with connect by prior 

以部门表作为解析

表结构:dept{id:'主键',name:'部门名称',parent_id:'父亲id'}

select * from dept
start with id=1 connect by prior id= parent_id
order siblings by id

分两部分理解:

第一步找出一条数据作为基础:select * from dept start with id =?

第二步prior放在左边还是右边是关键。

查询子节点:prior id = parent_id。以id作为需要匹配对象找出parent_id相等的数据。以上面sql作为例子 1= parent_id找出满足这样条件的记录。

查询父节点:id = prior parent_id。以parent_id作为需要匹配的对象,找出id等于parent_id的记录。

最后:观察数据结果集层级是否正确。

原文地址:https://www.cnblogs.com/chenweichu/p/6513443.html