Oracle层次化查询即递归查询适宜应用在由表结构维护层次关系的场合中,通常我们在处理这类问题时一般借助于表的自连接,但是灵活性有限,下面对Oracle层次化查询作一阐述:假定存在一张员工信息表emp,其包含如下字段:empno(员工编号),ename(员工姓名),manger(领导编号),现要求按员工层次顺序显示员工信息。sql代码如下:
select * from emp
start with manger is null
connect by manger=prior empno
order siblings by ename;
| empno | ename | manager |
| A | A | |
| J | J | B |
| D | D | B |
| E | E | B |
| B | B | A |
| F | F | B |
| G | G | C |
| H | H | C |
| C | C | A |
下面对上述语句的执行过程作一阐述:
首先根据start with子句确定根节点,在此处根节点通过manger is null确定,
然后根据connect by子句确定层次关系是通过哪些字段进行关联而产生的,在此处为manager=prior empno,
需要重点指出的是prior关键字的含义 ,它指明了递归的方向,prior所在的一侧为level高的一侧,order siblings by指明对处在同一层级的兄弟节点进行排序.
本文介绍Oracle层次化查询的应用场景及实现方式,通过一个员工信息表的实例展示如何使用START WITH和CONNECT BY子句来查询并展示数据的层次结构。
3718

被折叠的 条评论
为什么被折叠?



