概述
今天把好久不用的oracle基本又重新复习了一下,今天把层次查询回顾一下.
比如要员工表中查询出是老板的员工(从图上可以看出,是老板的员工分别是1,2,3层的king,jones,blank,clark,ford,scott
该表的数据为
EMPNO ENAME JOB MGR
------ ---------- --------- ----------
7369 SMITH CLERK 7902
7499 ALLEN SALESMAN 7698
7521 WARD SALESMAN 7698
7566 JONES MANAGER 7839
7654 MARTIN SALESMAN 7698
7698 BLAKE MANAGER 7839
7782 CLARK MANAGER 7839
7788 SCOTT ANALYST 7566
7839 KING PRESIDENT
7844 TURNER SALESMAN 7698
7876 ADAMS CLERK 7788
7900 JAMES CLERK 7698
7902 FORD ANALYST 7566
7934 MILLER CLERK 7782
=====================================================
下面进入正题:层次查询是Oracle特有的,1,其中用到关键字 connect ;2,既然是树结构的那么查询的时候就得有个起始顶点。
比如查询出是老板的员工:分析,也就是说empno 要出出在MGR中符合条件。
select level,empno,ename,mgr (level是Oracle提供的一个列号)
from emp
connect by prior empno=mgr
start with mgr is null
order by 1;(order by 1就是按第一列升序)
结果是
LEVEL EMPNO ENAME||'的老板是'||MGR
------- ---------- --------------------------
1 7839 KING的老板是
2 7566 JONES的老板是7839
2 7698 BLAKE的老板是7839
2 7782 CLARK的老板是7839
3 7902 FORD的老板是7566
3 7521 WARD的老板是7698
3 7900 JAMES的老板是7698
3 7934 MILLER的老板是7782
3 7499 ALLEN的老板是7698
3 7788 SCOTT的老板是7566
3 7654 MARTIN的老板是7698
3 7844 TURNER的老板是7698
4 7876 ADAMS的老板是7788
4 7369 SMITH的老板是7902
===========================================
connect by prior是oracle固定写法,start with 是指树的哪个顶结点开始查,当然也查整个树中的某一个小分枝。该话我意思就是说“从mgr 为空的结点开始查”
当然不使用层也可以实现,但是效率没有层次高。
最后
以上就是高高羊为你收集整理的oracle层次查询的全部内容,希望文章能够帮你解决oracle层次查询所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复