1.对于表中行与行存在父子关系时,可以通过connect by查询方式,查询行与行之间的父子关系

select lpad('-',(level-1),'-')|| empno as tempno,
ename,mgr,level,
decode(level,1,1) as root,
decode(connect_by_isleaf,1,1) as leafnode
from emp
start with empno=7566
connect by (prior empno) = mgr
order by level;

除了level伪列外,connect_by_isleaf也是伪列,1表示没有子记录,0则相反

2.当需要把表中某一属性按照父子关系拼接起来,可以借助sys_connect_by_path

with x1 as
(select deptno,ename,row_number() over(partition by deptno order by ename) as rn from emp1)
select deptno,sys_connect_by_path(ename,',') as nameC from x1
where connect_by_isleaf =1
start with rn=1 connect by (prior deptno)= deptno and (prior rn)=rn-1;

3.对于树形查询结果排序,如果保持树结构的正确性非常关键,因此我们采用SIBLINGS关键字只对分支内部进行排序

select lpad('-',(level-1),'-')|| empno as tempno,
ename,mgr,level,
decode(level,1,1) as root,
decode(connect_by_isleaf,1,1) as leafnode
from emp1
start with empno=7566
connect by (prior empno) = mgr
order siblings by empno desc ;

对于非父子关系字段的过滤条件,需要为该字段的过滤条件做一个子查询,然后基于该子查询再进行树形查询。

4.上面几个查询都是从根往子节点查询,如何从子节点递归查询到根呢,如下所示

select ename,mgr,level
from emp1
start with empno=7902
connect by (prior mgr) = empno
order by level;

最新文章

  1. install cygwin
  2. sp_rename
  3. jar文件签名
  4. 网络设备作用和工作ISO层
  5. 浏览器测试功能(jquery1.9以后已取消)
  6. NetFlow网络流量监测技术的应用和设计(转载)
  7. tp集成支付宝担保支付
  8. 简单讲解iOS应用开发中的MD5加密的相关使用
  9. mosquitto MQTT message broker on ubuntu/debian built from source
  10. putty 默认设置
  11. Java中常用Cache机制的实现
  12. 【Centos7】5分钟理解防火墙firewalld
  13. eclipse 创建springboot项目
  14. The CLI moved into a separate package: webpack-cli.解决办法
  15. 一根数据线将zero w打造成上级代理路由
  16. 省市区联动JS脚本
  17. Quartz:不要重复造轮子,一款企业级任务调度框架。
  18. (转)Unity3D研究院之Assetbundle的原理(六十一)
  19. Python全栈2期 备忘
  20. 剑指Offer——把二叉树打印成多行

热门文章

  1. C -小晴天老师系列——竖式乘法
  2. 一个神奇SQL引发的故障【转】
  3. 获取集合、数组后要判断为空的必要性以及根据构造器创建对象后不是null的证实
  4. (译)UEFI 启动:实际工作原理
  5. RuntimeError: module compiled against API version 0xa but this version of numpy is 0x9
  6. myBatIs.Net 调用Oracle 存储过程返回游标
  7. git 免密码提交代码
  8. JQuery中常用方法备忘
  9. leetcode136 利用异或运算找不同的元素
  10. gerrit push配置