【从本人QQ空间迁移】oracle高级迭代查询

         select id,parent_id,name,level,connect_by_isleaf,connect_by_iscycle,replace(sys_connect_by_path(id,'|'),'|','')
         from table   connect by nocycle prior id=parent_id start with  id='xxx' order sibings by id
         函数一:connect by prior    start with 
                       标准迭代查询,可以从上级到最底层,也可以从底层到最上级,主要是id=parent_id 或parent_id=id的区别
         函数二:replace(col,str1,str2)
                       基本的字符串替换函数,将col列中的str1替换为str2
         函数三:
sys_connect_by_path(id,'|')
                       获取全节点路径,以|分割

         字段:
level, connect_by_isleaf, connect_by_iscycle, nocycle,sibings   
                   level  层级,默认从1开始
                   connect_by_isleaf  判断是否叶子节点,0—否,1—是
                   connect_by_iscycle  判断是否有循环存在,存在则为1,否则为0
                   nocycle   迭代时,按不循环查询
                   sibings    按照同级节点排序
         备注:该方法适用于oracle 9i及以上版本,以及db2 for i系列产品,其它暂不适用。

猜你喜欢

转载自blog.csdn.net/wzh474420999/article/details/79620893
今日推荐