递归层级查询: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的记录。
最后:观察数据结果集层级是否正确。