oracle递归查询详解,[数据库]Oracle递归查询
[数据库]Oracle递归查询
0 2015-11-16 19:00:07
一、创建数据
1.1、建立表与插入数据CREATE TABLE DISTRICT( ID NUMBER(10) NOT NULL, PARENT_ID NUMBER(10), NAME VARCHAR2(255 BYTE) NOT NULL);ALTER TABLE DISTRICT ADD ( CONSTRAINT DISTRICT_PK PRIMARY KEY (ID));ALTER TABLE DISTRICT ADD ( CONSTRAINT DISTRICT_R01 FOREIGN KEY (PARENT_ID) REFERENCES DISTRICT (ID)); insert into DISTRICT (id, parent_id, name)values (1, null, '四川省');insert into DISTRICT (id, parent_id, name)values (2, 1, '巴中市');insert into DISTRICT (id, parent_id, name)values (3, 1, '达州市');insert into DISTRICT (id, parent_id, name)values (4, 2, '巴州区');insert into DISTRICT (id, parent_id, name)values (5, 2, '通江县');insert into DISTRICT (id, parent_id, name)values (6, 2, '平昌县');insert into DISTRICT (id, parent_id, name)values (7, 3, '通川区');insert into DISTRICT (id, parent_id, name)values (8, 3, '宣汉县');insert into DISTRICT (id, parent_id, name)values (9, 8, '塔河乡');insert into DISTRICT (id, parent_id, name)values (10, 8, '三河乡');insert into DISTRICT (id, parent_id, name)values (11, 8, '胡家镇');insert into DISTRICT (id, parent_id, name)values (12, 8, '南坝镇');insert into DISTRICT (id, parent_id, name)values (13, 6, '大寨乡');insert into DISTRICT (id, parent_id, name)values (14, 6, '响滩镇');insert into DISTRICT (id, parent_id, name)values (15, 6, '龙岗镇');insert into DISTRICT (id, parent_id, name)values (16, 6, '白衣镇');commit;
二、start with connect by prior递归
2.1、查询所有子节点
SELECT *FROM districtSTART WITH NAME ='巴中市'CONNECT BY PRIOR ID=parent_id
2.2、查询所有父节点
SELECT *FROM districtSTART WITH NAME ='平昌县'CONNECT BY PRIOR parent_id=ID
只需要交换 id 与parent_id的位置即可
2.3、查询指定节点的,根节点SELECT d.*,connect_by_root(d.id),connect_by_root(NAME)FROM district dWHERE NAME='平昌县'START WITH d.parent_id=1 --d.parent_id is null 结果为四川省CONNECT BY PRIOR d.ID=d.parent_id
2.4、查询巴中市下行政组织递归路径
SELECT ID,parent_id,NAME,sys_connect_by_path(NAME,'->') namepath,LEVELFROM district START WITH NAME='巴中市'CONNECT BY PRIOR ID=parent_id
三、with递归
3.1、with递归子类
WITH t (ID ,parent_id,NAME) --要有列名AS(SELECT ID ,parent_id,NAME FROM district WHERE NAME='巴中市'UNION ALLSELECT d.ID ,d.parent_id,d.NAME FROM t,district d --要指定表和列表,WHERE t.id=d.parent_id)SELECT * FROM t;
3.2、递归父类WITH t (ID ,parent_id,NAME) --要有表AS(SELECT ID ,parent_id,NAME FROM district WHERE NAME='通江县'UNION ALLSELECT d.ID ,d.parent_id,d.NAME FROM t,district d --要指定表和列表,WHERE t.parent_id=d.id)SELECT * FROM t;
转载请保留本文网址:http://www.shaoqun.com/a/159501.html
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们:admin@shaoqun.com。
oracle
0
oracle递归查询详解,[数据库]Oracle递归查询相关推荐
- 图文:详解数据库Oracle 11g的基本安装
From: http://blog.csdn.net/wjcreator123/article/details/3243041 下面提供的是Oracle 11g的下载地址和基本安装过程(仅作参考) 第 ...
- oracle dg 体系结构,ORACLE DG 详解(oracle dataguard)
DG的原理: DG分为物理standy,逻辑standy 物理standy: 物理STANDBY提供与主数据库完全一样的拷贝(块到块),数据库SCHEMA,包括索引都是一样的.它是直接应用REDO实现 ...
- ORACLE的索引和约束详解数据库
ORACLE的索引和约束详解数据库 Oracle的约束 * 如果某个约束只作用于单独的字段,即可以在字段级定义约束,也可以在表级定义约束,但如果某个约束作用于多个字段, 必须在表级定义约束 * 在定义 ...
- oracle数据库按日期查询,关于Oracle数据库日期范围查询的两种实现方法详解,oracle详解...
关于Oracle数据库日期范围查询的两种实现方法详解,oracle详解 Oracle数据库日期范围查询有两种方式:to_char方式和to_date方式,接下来我们通过一个实例来介绍这一过程.我们假设 ...
- oracle scn 重置,学习笔记:Oracle SCN详解 SCN与Oracle数据库恢复的关系
天萃荷净 分享一篇关于Oracle SCN的详解,介绍SCN与Oracle数据库恢复的关系和SCN在数据库中的作用 一.为什么需要System checkpoint SCN号与Datafile Che ...
- Oracle ASM 详解 收藏
Oracle ASM 详解 ASM:Automatic Storage Management, 是Oracle 主推的一种面向Oracle的存储解决方案, ASM 和 RDBMS 非常相似,ASM 也 ...
- oracle有哪两种内存结构,Oracle体系结构详解(物理构造,内存结构和逻辑结构)...
当前位置:我的异常网» 数据库 » Oracle体系结构详解(物理构造,内存结构和逻辑结构 Oracle体系结构详解(物理构造,内存结构和逻辑结构) www.myexceptions.net 网友分 ...
- Oracle 冷备份详解【实战案例】
Oracle 冷备份详解 --准备工作 select * from v$database; select file_name from dba_data_files; create tablespac ...
- oracle里面asm的作用,Oracle ASM 详解
Oracle ASM 详解 ASM:Automatic Storage Management, 是Oracle 主推的一种面向Oracle的存储解决方案, ASM 和 RDBMS 非常相似,ASM 也 ...
最新文章
- AI需求强劲 AI芯片市场规模有望达到405亿
- 【CodeForces - 124C】Prime Permutation(数学,思维,小结论)
- mysql数据应用从入门_MYSQL数据库应用从入门到精通----读书笔记
- Java DataOutputStream size()方法及示例
- [解决方案]ln:无法创建符号链接‘ /usr/bin/python‘:权限不够
- C++编译过程中没有找到MFC80UD.DLL,因此这个程序未能启动.重新安装应用程序可能会修复此问题? 的彻底解决...
- mongodb update ()命令
- python terminal_一个简单、易用的Python命令行(terminal)进度条库
- 凸优化第七章统计估计 7.5实验设计
- Java的发展 Java在不同系统下的开发环境 Java语言特性 Java实现跨平台
- crm系统需要的服务器,灵当CRM管理系统运行环境-CRM服务器配置
- 转载好用的小工具 【who-lock-me】
- 解决ueditor编辑器图片在线管理图片无法显示
- svn 提交仍处于树冲突 One or more files are in a conflicted state
- 商场抽奖软件 android,召唤抽奖系统3.0正式版
- 人生的诗·335~339节
- android开发者选项打开方式,打开、关闭安卓手机的开发者选项的方法详解
- audit详细使用配置
- android 编辑说说页面,QQ说说已经发表了怎么修改?
- 如何用一张照片证明你是老网民?