[数据库]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递归查询相关推荐

  1. 图文:详解数据库Oracle 11g的基本安装

    From: http://blog.csdn.net/wjcreator123/article/details/3243041 下面提供的是Oracle 11g的下载地址和基本安装过程(仅作参考) 第 ...

  2. oracle dg 体系结构,ORACLE DG 详解(oracle dataguard)

    DG的原理: DG分为物理standy,逻辑standy 物理standy: 物理STANDBY提供与主数据库完全一样的拷贝(块到块),数据库SCHEMA,包括索引都是一样的.它是直接应用REDO实现 ...

  3. ORACLE的索引和约束详解数据库

    ORACLE的索引和约束详解数据库 Oracle的约束 * 如果某个约束只作用于单独的字段,即可以在字段级定义约束,也可以在表级定义约束,但如果某个约束作用于多个字段, 必须在表级定义约束 * 在定义 ...

  4. oracle数据库按日期查询,关于Oracle数据库日期范围查询的两种实现方法详解,oracle详解...

    关于Oracle数据库日期范围查询的两种实现方法详解,oracle详解 Oracle数据库日期范围查询有两种方式:to_char方式和to_date方式,接下来我们通过一个实例来介绍这一过程.我们假设 ...

  5. oracle scn 重置,学习笔记:Oracle SCN详解 SCN与Oracle数据库恢复的关系

    天萃荷净 分享一篇关于Oracle SCN的详解,介绍SCN与Oracle数据库恢复的关系和SCN在数据库中的作用 一.为什么需要System checkpoint SCN号与Datafile Che ...

  6. Oracle ASM 详解 收藏

    Oracle ASM 详解 ASM:Automatic Storage Management, 是Oracle 主推的一种面向Oracle的存储解决方案, ASM 和 RDBMS 非常相似,ASM 也 ...

  7. oracle有哪两种内存结构,Oracle体系结构详解(物理构造,内存结构和逻辑结构)...

    当前位置:我的异常网» 数据库 » Oracle体系结构详解(物理构造,内存结构和逻辑结构 Oracle体系结构详解(物理构造,内存结构和逻辑结构) www.myexceptions.net  网友分 ...

  8. Oracle 冷备份详解【实战案例】

    Oracle 冷备份详解 --准备工作 select * from v$database; select file_name from dba_data_files; create tablespac ...

  9. oracle里面asm的作用,Oracle ASM 详解

    Oracle ASM 详解 ASM:Automatic Storage Management, 是Oracle 主推的一种面向Oracle的存储解决方案, ASM 和 RDBMS 非常相似,ASM 也 ...

最新文章

  1. AI需求强劲 AI芯片市场规模有望达到405亿
  2. 【CodeForces - 124C】Prime Permutation(数学,思维,小结论)
  3. mysql数据应用从入门_MYSQL数据库应用从入门到精通----读书笔记
  4. Java DataOutputStream size()方法及示例
  5. [解决方案]ln:无法创建符号链接‘ /usr/bin/python‘:权限不够
  6. C++编译过程中没有找到MFC80UD.DLL,因此这个程序未能启动.重新安装应用程序可能会修复此问题? 的彻底解决...
  7. mongodb update ()命令
  8. python terminal_一个简单、易用的Python命令行(terminal)进度条库
  9. 凸优化第七章统计估计 7.5实验设计
  10. Java的发展 Java在不同系统下的开发环境 Java语言特性 Java实现跨平台
  11. crm系统需要的服务器,灵当CRM管理系统运行环境-CRM服务器配置
  12. 转载好用的小工具 【who-lock-me】
  13. 解决ueditor编辑器图片在线管理图片无法显示
  14. svn 提交仍处于树冲突 One or more files are in a conflicted state
  15. 商场抽奖软件 android,召唤抽奖系统3.0正式版
  16. 人生的诗·335~339节
  17. android开发者选项打开方式,打开、关闭安卓手机的开发者选项的方法详解
  18. audit详细使用配置
  19. android 编辑说说页面,QQ说说已经发表了怎么修改?
  20. 如何用一张照片证明你是老网民?

热门文章

  1. 抽象类和接口的深度解析
  2. VMware 12启动不起来
  3. QT进行http请求(post/get)
  4. 优先队列(堆)详细整理学习
  5. WiFi运营商烧钱抢占市场 你城市的公交有WiFi了吗
  6. 关于unity客户端防作弊(内存数据被修改)
  7. L1-011 A-B (20 分)
  8. 苹果Mac OS实现长按 command+Q 退出软件,避免误触直接退出应用终极解决方案
  9. python自动化测试实战 无涯_Python自动化测试实战
  10. 腾讯支持鸿蒙系统,鸿蒙系统份额突破16%生死线