标签:递归 start 扫描 prior connect oracle 树中 节点
转自:https://blog.csdn.net/WuLex/article/details/82773890
数据说明一切:
总结:
1)prior
放在子节点端,则表示扫描树是以start with
指定的节点作为根节点从上往下扫描。可能对应一个或多个分支。start with
可以省略,如果省略,表示对所有节点都当成根节点分别进行遍历
2)prior
放在父节点端,则表示扫描树是以start with
指定的节点作为最低层子节点,从下往上扫描。顺序是子节点往父节点扫描,直到根节点为止,这种情况只能得到一个分支。start with
可以省略,如果省略,表示对所有节点都当成最低层子节点分别往根节点方向遍历
最后会了上面大家应该知道下面 sys_connect_path()
sys_connect_by_path
函数主要作用是可以把一个父节点下的所有子节点通过某个字符进行区分,然后连接在一个列中显示:
oracle递归查询子节点
通过子节点向根节点追朔.
备注:
start with ...connect by
的用法,start with
后面所跟的就是就是递归的种子。
递归的种子也就是递归开始的地方 connect by
后面的"prior
" 如果缺省:则只能查询到符合条件的起始行,并不进行递归查询;connect by prior
后面所放的字段是有关系的,它指明了查询的方向。
练习: 通过子节点获得顶节点
select FIRST_VALUE(deptid) OVER (ORDER BY LEVEL DESC ROWS UNBOUNDED PRECEDING) AS firstdeptid from persons.dept start with deptid=76 connect by prior paredeptid=deptid
表结构
标签:递归,start,扫描,prior,connect,oracle,树中,节点 来源: https://www.cnblogs.com/4AMLJW/p/treePrior202003170946.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。