Oracle 11g R2 RSF(Recurive Subquery factoring)
来源:互联网 发布:java map遍历 编辑:程序博客网 时间:2024/06/04 01:20
在Oracle 11gR2之前,一般用start with和connect by来递归的显示树形结构,请看如下脚本
select lpad(' ',2*level-1,' ') || ename ename,empno,mgr
from emp
where empno is not null
connect by prior empno = mgr
start with mgr is null
ENAME EMPNO MGR
-------------------- ---------- ----------
KING 7839
JONES 7566 7839
SCOTT 7788 7566
ADAMS 7876 7788
FORD 7902 7566
SMITH 7369 7902
BLAKE 7698 7839
ALLEN 7499 7698
WARD 7521 7698
MARTIN 7654 7698
TURNER 7844 7698
JAMES 7900 7698
CLARK 7782 7839
MILLER 7934 7782
从11gR2开始,可以用RSF来实现
with sun(lvl,ename,empno,mgr) as
(select 1,lpad(' ',2*1-1,' ') || ename ename,empno,mgr from emp where mgr is null
union all
select sun.lvl+1,lpad(' ',2*lvl-1,' ') || d.ename ename,d.empno,d.mgr
from sun, emp d
where sun.empno = d.mgr)
select lvl,ename,empno,mgr from sun
LVL ENAME EMPNO MGR
---------- -------------------- ---------- ----------
1 KING 7839
2 JONES 7566 7839
2 BLAKE 7698 7839
2 CLARK 7782 7839
3 ALLEN 7499 7698
3 WARD 7521 7698
3 MARTIN 7654 7698
3 SCOTT 7788 7566
3 TURNER 7844 7698
3 JAMES 7900 7698
3 FORD 7902 7566
3 MILLER 7934 7782
4 SMITH 7369 7902
4 ADAMS 7876 7788
观察一下上述两份输出,用传统的start with和connect by,结果顺序类似于对emp表的前序遍历(preorder traversal);而使用RSF,则是对emp表的层次遍历(level traversal)
- Oracle 11g R2 RSF(Recurive Subquery factoring)
- Oracle 11g R2 RSF(Recurive Subquery factoring)
- Oracle 11gR2 RSF(Recurive Subquery factoring)
- Oracle 11g:Scalar Subquery expression Limitation
- WITH Clause : Subquery Factoring
- Oracle 10g R2升级到Oracle 11g R2
- Oracle 11g R2 安装
- 安装Oracle 11g R2
- oracle 11g R2卸载
- Oracle 11 g R2 软件
- Oracle 11g R2 安装
- Recursive Subquery Factoring (Recursive WITH)
- Windows server 2008 R2 安装 Oracle 11g R2 dataguard
- ubuntu10.04 安装oracle 11g r2
- ubuntu10.04 安装oracle 11g r2
- Linux安装 oracle 11g r2
- oracle 11g r2 Rac install
- Oracle 11g r2 下载地址
- 软件开发中最顶级的 17 个平台和工具
- leetcode第三题: 输出不包含重复字母的最长子串
- Aladdin and the Flying Carpet [整数分解]
- camera视频学习笔记(1)
- 单独编译安装PDO_MySQL
- Oracle 11g R2 RSF(Recurive Subquery factoring)
- 用两个栈实现队列
- 链表
- 北京理工大学2002年机试(A)
- angular2中自定义window对象
- 图结构练习——BFSDFS——判断可达性
- 十七、Hive 表数据加载、导出、查询
- 访问量分类统计(QQ,微信,微博,网页,网站APP,其他)
- Android中的下拉刷新