--使用connect by和strart with子句
SELECT [level],column,expression, ...
FROM table
[WHERE where_clause]
[[START WITH start_condition] [CONNECT BY prior_condition]];

SELECT  empno,
           mgr,
           ename,
           job
      FROM emp
START WITH mgr IS NULL
CONNECT BY PRIOR empno = mgr;


 
--使用偽列level
SELECT LEVEL,
           empno,
           mgr,
           ename,
           job
      FROM emp
START WITH mgr IS NULL
CONNECT BY PRIOR empno = mgr
  ORDER BY LEVEL, mgr, empno;
 

--格式化層次查詢的結果
SELECT LEVEL,
           empno,
           mgr,
          lpad(' ',2*level-1)||ename as employee,
           job
      FROM emp
START WITH mgr is null
CONNECT BY PRIOR empno = mgr;

--從非根節點開始遍歷
SELECT LEVEL,
           empno,
           mgr,
           lpad(' ',2*level-1)||ename as employee,
           job
      FROM emp
START WITH ename like 'JONES'
CONNECT BY PRIOR empno = mgr;

--在start with子句中使用子查詢
  SELECT LEVEL,
           empno,
           mgr,
           lpad(' ',2*level-1)||ename as employee,
           job
      FROM emp
START WITH empno=(select empno from emp where ename='CLARK')
CONNECT BY PRIOR empno = mgr;

--向上遍歷
SELECT LEVEL,
           empno,
           mgr,
           lpad(' ',2*level-1)||ename as employee,
           job
      FROM emp
START WITH ename like 'JONES'
CONNECT BY PRIOR mgr=empno;

--從層次化查詢中刪除節點
SELECT LEVEL,
           empno,
           mgr,
           lpad(' ',2*level-1)||ename as employee,
           job
      FROM emp
WHERE ename !='JONES'
START WITH mgr is null
CONNECT BY PRIOR empno = mgr;

--上面的查詢雖然刪除了節點但是並沒有刪除該節點的分支,為了連同分支也一併刪除,在connect by子句中使用and子句
SELECT LEVEL,
           empno,
           mgr,
           lpad(' ',2*level-1)||ename as employee,
           job
      FROM emp
START WITH mgr is null
CONNECT BY PRIOR empno = mgr
AND  ename !='JONES';

--在層次化查詢中加入其它條件
SELECT LEVEL,
           empno,
           mgr,
           lpad(' ',2*level-1)||ename as employee,
           job,
           sal
      FROM emp
WHERE sal<3000     
START WITH mgr is null
CONNECT BY PRIOR empno = mgr;

connect by和strart with子句的更多相关文章

  1. Oracle学习之start with...connect by子句的用法

    转自:http://www.blogjava.net/xzclog/archive/2010/03/05/314642.html,多谢博主分享 Oracle中start with…connect by ...

  2. Oracle 之 树查询 START WITH ... CONNECT BY ...子句

    START WITH ... CONNECT BY ...子句是结构化查询中用到的,其基本语法是: select … from tablename start with 条件1 connect by ...

  3. Oracle中start with...connect by/start with…connect by prior子句的用法

    connect by 是结构化查询中用到的,其基本语法是:select … from tablenamestart with 条件1connect by 条件2where 条件3;例:select * ...

  4. Oracle中start with...connect by (prior)子句的用法

    connect by 是结构化查询中用到的,基本语法是:select … from tablenamestart with 条件1connect by 条件2where 条件3; 例:select * ...

  5. Start with connect by prior 递归查询

    在SELECT命令中使用CONNECT BY和START WITH子句可以查询表中的树型结构关系.其命令格式如下: SELECT * from CONNECT BY {PRIOR列名1=列名2|列名1 ...

  6. oracle分层查询中的start with和connect by(树结构查询)

    来源:  http://blog.csdn.net/itmyhome1990/article/details/16338637   ORACLE是一个关系数据库管理系统,它用表的形式组织数据,在某些表 ...

  7. Oracle “CONNECT BY” 使用 [转]

    Oracle “CONNECT BY”是层次查询子句,一般用于树状或者层次结果集的查询.其语法是: 1 [ START WITH condition ]2 CONNECT BY [ NOCYCLE ] ...

  8. PLSQL_基础系列11_递归和层次查询CONNECT BY(案例)

    2015-05-31 Created By BaoXinjian

  9. oracle中 connect by prior 递归算法 -- 理解

    oracle中 connect by prior 递归算法 -- 理解 http://blog.163.com/xxciof/blog/static/7978132720095193113752/  ...

随机推荐

  1. 题解 CF1005A 【Tanya and Stairways】

    楼上别说这个题水,这个题可能还真有不知道的知识点. 看到这个题,想到刚学的单调栈. 单调栈? 单调栈和单调队列差不多,但是我们只用到它的栈顶. 单调,意思就是一直递增或者递减. 这跟这个题有什么关系? ...

  2. pyCharm最新2019激活码

    破解补丁激活优点:到期时间为2099年,基本为永久啦 缺点:相对服务器激活麻烦些,但是一共只需要3个步骤,其实并不麻烦 一.下载 https://pan.baidu.com/s/1mcQM8CLUnw ...

  3. [洛谷P4705]玩游戏

    题目大意:对于每个$k\in[1,t]$,求:$$\dfrac{\sum\limits_{i=1}^n\sum\limits_{j=1}^m(a_i+b_j)^k}{nm}$$$n,m,t\leqsl ...

  4. BZOJ2159 Crash 的文明世界 【第二类斯特林数 + 树形dp】

    题目链接 BZOJ2159 题解 显然不能直接做点分之类的,观察式子中存在式子\(n^k\) 可以考虑到 \[n^k = \sum\limits_{i = 0} \begin{Bmatrix} k \ ...

  5. Weblogic CVE-2018-3191远程代码命令执行漏洞复现

      0x00 简介 北京时间10月17日,Oracle官方发布的10月关键补充更新CPU(重要补丁更新)中修复了一个高危的WebLogic远程代码执行漏洞(CVE-2018-3191).该漏洞允许未经 ...

  6. C#线程篇---Windows调度线程准则(3)

    Windows本身就是一个抢占式操作系统,它的实现,必定有某种算法在里面,比如什么时候调度哪些线程,需要花费多长时间等问题. 我们时时在用Windows,作为程序员,我们有必要知道其中最贴近我们的算法 ...

  7. golang json 编码解码

    json 编码 package main import ( "encoding/json" "fmt" ) type Person struct { Name ...

  8. poj 3685 二分

    Matrix Time Limit: 6000MS   Memory Limit: 65536K Total Submissions: 7415   Accepted: 2197 Descriptio ...

  9. Linux运维一:生产环境CentOS6.6系统的安装

    CentOS 6.6 x86_64官方正式版系统(64位)下载地址 系统之家:http://www.xitongzhijia.net/linux/201412/33603.html 百度网盘:http ...

  10. Python高手之路【十一】python基础之面向对象

    创建类和对象 面向对象编程是一种编程方式,此编程方式的落地需要使用 “类” 和 “对象” 来实现,所以,面向对象编程其实就是对 “类” 和 “对象” 的使用. 类就是一个模板,模板里可以包含多个函数, ...