Oracle层次化查询(递归查询)

Oracle层次化查询即递归查询适宜应用在由表结构维护层次关系的场合中,通常我们在处理这类问题时一般借助于表的自连接,但是灵活性有限,下面对Oracle层次化查询作一阐述:假定存在一张员工信息表emp,其包含如下字段:empno(员工编号),ename(员工姓名),manger(领导编号),现要求按员工层次顺序显示员工信息。sql代码如下:

select * from emp

start with manger is null

connect by manger=prior empno

order siblings by ename; 

emp表
empnoenamemanager
AA 
JJB
DDB
EEB
BBA
FFB
GGC
HHC
CCA

下面对上述语句的执行过程作一阐述:

首先根据start with子句确定根节点,在此处根节点通过manger is null确定,

然后根据connect by子句确定层次关系是通过哪些字段进行关联而产生的,在此处为manager=prior empno,

需要重点指出的是prior关键字的含义 ,它指明了递归的方向,prior所在的一侧为level高的一侧,order siblings by指明对处在同一层级的兄弟节点进行排序.

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值