oracle树查询start with connect by prior 以及level 的使用

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_33229669/article/details/85254312

在oracle中, level是和connect by ,start with 结合在一起使用的.
用于递归查询.
connect by 子句用于定义表中的数据是如何联系的
start with子句用于定义树查询的初始的起点
level表示查询的深度(level 表示递归的层次)

表中有数据如下

使用树查询, sql如下

    select t.node_id, t.node_name, level
        from km_tree_node t
       connect by prior t.parent_id = t.node_id
        start with t.node_id = '1095' 
        order by t.node_id  asc

结果如图所示

注意prior 必须放在t.parent_id这一侧, 即根节点的id, 否则prior 放在node_id一侧只会出现一个结果,而不是两个结果.
start with为树查询的起点, 从node_id为1095的查起 .
最后要根据id的升序排序, 默认是根据level 的升序排序. level为深度.

参考文章
https://www.cnblogs.com/sunfie/p/5129716.html#commentform

猜你喜欢

转载自blog.csdn.net/qq_33229669/article/details/85254312