Oracle层次查询方式
来源:互联网 发布:农村淘宝服务站流程 编辑:程序博客网 时间:2024/04/29 14:46
create table cp(u int,uname int,parentid int);
测试数据:
select rownum+1,rownum,rownum from dual connect by rownum<=10000;
传统方式:
select * from ( SELECT LEVEL as lvl, u,parentid FROM cp t1 start with parentid IS NULL connect by parentid= prior u ) h where (0= 0 OR .lvl = 0);Oracle11g新的方式:
WITH T(u,uname,parentid,the_level,path) AS ( ---- 必须把结构写出来 SELECT u, uname, parentid ---- 先写锚点查询,用START WITH的条件 , 1 AS the_level ---- 递归起点,第一层 , '\' || uname ---- 路径的第一截 FROM cp WHERE parentid IS NULL ---- 原来的START WITH条件 UNION ALL ---- 下面是递归部分 SELECT e.u, e.uname, e.parentid ---- 要加入的新一层数据,来自要遍历的emp表 , 1 + t.the_level ---- 递归层次,在原来的基础上加1 , t.path || '\' || e.uname ---- 把新的一截路径拼上去 FROM t, cp e ---- 典型写法,把子查询本身和要遍历的表作一个连接 WHERE t.u = e.parentid ---- 原来的CONNECT BY条件 ) SEARCH DEPTH FIRST BY parentid SET seq --- 指定DEPTH深度优先 BREADTH广度优先, 按顺序生成序号seqSELECT * FROM TORDER BY seq;
0 0
- Oracle层次查询方式
- oracle层次查询
- Oracle 层次查询
- oracle的层次查询
- ORACLE层次化查询
- oracle 层次化查询
- Oracle层次查询
- ORACLE层次查询学习
- oracle 层次查询
- Oracle 层次查询
- oracle 层次查询
- ORACLE之 层次查询
- Oracle当中层次查询
- oracle层次查询
- Oracle层次查询
- oracle 层次查询
- oracle层次化查询
- Oracle层次化查询
- 大数据与云计算的区别
- C#获取本机Sql Server服务器名
- 软件测试分类(按开发阶段划分)
- linux使用读写锁pthread_rwlock_t
- 移动互联网改变商业环境:商品的颠覆
- Oracle层次查询方式
- 南宁去痘印需要多少钱
- 打造字符界面的多媒体Linux系统
- 基于 Windows 7 的高低权限进程通信的研究与实现
- 自定义多选TextView组件
- cocos2dx lua 下查找文件是否存在的方法
- Android4.4源码及内核编译整理学习
- google校招在线测试题---2048
- FMDB