您的位置:首页 > 其它

递归查询START WITH CONNECT BY PRIOR

2016-12-29 00:20 288 查看
START WITH CONNECT BY PRIOR这个语法主要用于查询数据包中的树型结构关系 在遍历树形结构的时候可以使用

------原始数据


语法-----

start with (从某个节点id开始)

connect by prior (字节点id和父节点pid直接的关系需要)

可以向上查询 可以向下查询

--例子1:

  -- empno 相当于id(父节点)---mgr 相当于pid(子节点)

select * from emp

start with empno=7369

connect by prior mgr  = empno

--- mgr (pid(子节点)) 与empno (id(父节点)) 谁在前或后 有区别

-- pid 在前 id 在后 想上查询   ID在前 pid在后 向下查询

-- 这个例子 - 首先找 7369 然后找到7369的上级 在向上找领导 找到最后没有上级的7839

-- empno=7839 后就只会找到一个 king 没有上级领导



--2: ID在前 pid在后 向下查询

select * from emp

start with empno=7839

connect by prior empno =mgr



3---多个节点 向上查询  

select * from emp

start with empno=7369  or  empno=7934

connect by prior mgr = empno



4-- 加上 过滤   

select * from emp

where empno <> 7782

start with empno=7369  or  empno=7934

connect by prior mgr = empno



5-- 加 排序

select * from emp

where empno <> 7782

start with empno=7369  or  empno=7934

connect by prior mgr = empno

order by sal desc



 select deptno,ename,sal,

      sum(sal) over (order by ename) ,

      sum(sal) over (),     

      1000*round(sal/sum(sal) over (),4)

      from emp

       where deptno in(10,20)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: