暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

树结构的查询start with子句

Oracle微学堂 2019-05-24
917

1使用start with语法来处理层次结构的数据

层次结构的数据查询

select empno,ename,mgr from emp

start with (ename='SMITH')

connect by prior mgr=empno;

EMPNO ENAME MGR

----- ---------- ----------

7369 SMITH 7902

7902 FORD 7566

7566 JONES 7839

7839 KING

伪列level

select level,empno,ename,mgr from emp

start with (ename='SMITH')

connect by prior mgr=empno;


LEVEL EMPNO ENAME MGR

----- ---------- ---------- ----------

1 7369 SMITH 7902

2 7902 FORD 7566

3 7566 JONES 7839

4 7839 KING


从树根开始查询

select level,empno,ename,mgr from emp

start with (ename='KING')

connect by prior empno=mgr;

LEVEL EMPNO ENAME MGR

----- ---------- ---------- ----------

1 7839 KING

2 7566 JONES 7839

3 7902 FORD 7566

4 7369 SMITH 7902

2 7698 BLAKE 7839

3 7499 ALLEN 7698

3 7521 WARD 7698

3 7654 MARTIN 7698

3 7844 TURNER 7698

3 7900 JAMES 7698

2 7782 CLARK 7839

3 7934 MILLER 7782


美化层次关系

select lpad('-',level,'-')||ename from emp

start with (ename='KING')

connect by prior empno=mgr;

LPAD('-',LEVEL,'-')||ENAME

--------------------------------

-KING

--JONES

---FORD

----SMITH

--BLAKE

---ALLEN

---WARD

---MARTIN

---TURNER

---JAMES

--CLARK

---MILLER


删除节点,下级保留

select level,empno,ename,mgr from emp

where ename<>'BLAKE'

start with (ename='KING')

connect by prior empno=mgr;

BLAKE一个人删除,不影响他的下属


删除枝干

select level,empno,ename,mgr from emp

start with (ename='KING')

connect by prior empno=mgr

and ename<>'BLAKE';

BLAKE和他的整个部门

扫描二维码关注我的微学堂

搜索刘老师微信号:Rman-2014,备注“Oracle学习与咨询”,即可添加好友;或者扫描下面二维码,关注我的“微学堂”公众号,了解最新OCP认证动态、题库及答案解析、培训机构及讲师介绍、课堂授课内容等。每天还有一篇技术文章发布哦!



最后修改时间:2019-12-20 16:17:33
文章转载自Oracle微学堂,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论