oracle递归查询实例
Oracle递归查询
- 创建表
建表语句:
CREATE TABLE SC_DISTRICT
(ID NUMBER(10) NOT NULL,PARENT_ID NUMBER(10),NAME VARCHAR2(255 BYTE) NOT NULL
);ALTER TABLE SC_DISTRICT ADD (CONSTRAINT SC_DISTRICT_PKPRIMARY KEY(ID));ALTER TABLE SC_DISTRICT ADD (CONSTRAINT SC_DISTRICT_R01 FOREIGN KEY (PARENT_ID) REFERENCES SC_DISTRICT (ID));
插入数据:
INSERT INTO SC_DISTRICT(ID,NAME) VALUES(1,'四川省');INSERT INTO SC_DISTRICT(ID,PARENT_ID,NAME) VALUES(2,1,'巴中市');
INSERT INTO SC_DISTRICT(ID,PARENT_ID,NAME) VALUES(3,1,'达州市'); INSERT INTO SC_DISTRICT(ID,PARENT_ID,NAME) VALUES(4,2,'巴州区');
INSERT INTO SC_DISTRICT(ID,PARENT_ID,NAME) VALUES(5,2,'通江县');
INSERT INTO SC_DISTRICT(ID,PARENT_ID,NAME) VALUES(6,2,'平昌县');INSERT INTO SC_DISTRICT(ID,PARENT_ID,NAME) VALUES(7,3,'通川区');
INSERT INTO SC_DISTRICT(ID,PARENT_ID,NAME) VALUES(8,3,'宣汉县');INSERT INTO SC_DISTRICT(ID,PARENT_ID,NAME) VALUES(9,8,'塔河乡');
INSERT INTO SC_DISTRICT(ID,PARENT_ID,NAME) VALUES(10,8,'三河乡');
INSERT INTO SC_DISTRICT(ID,PARENT_ID,NAME) VALUES(11,8,'胡家镇');
INSERT INTO SC_DISTRICT(ID,PARENT_ID,NAME) VALUES(12,8,'南坝镇');INSERT INTO SC_DISTRICT(ID,PARENT_ID,NAME) VALUES(13,6,'大寨乡');
INSERT INTO SC_DISTRICT(ID,PARENT_ID,NAME) VALUES(14,6,'响滩镇');
INSERT INTO SC_DISTRICT(ID,PARENT_ID,NAME) VALUES(15,6,'龙岗镇');
INSERT INTO SC_DISTRICT(ID,PARENT_ID,NAME) VALUES(16,6,'白衣镇');
生成表如下:
- 查询某节点的所有子孙节点
查询巴中市下面的所有行政组织(结果包含当前节点):
SELECT *
FROM SC_DISTRICT
START WITH NAME='巴中市'
CONNECT BY PRIOR ID=PARENT_ID查询结果:
ID PARENT_ID NAME
2 1 巴中市
4 2 巴州区
5 2 通江县
6 2 平昌县
13 6 大寨乡
14 6 响滩镇
15 6 龙岗镇
16 6 白衣镇
- 查询指定节点的递归根节点
查询响滩镇镇所属的市:
SELECT ID, PARENT_ID, NAME, CONNECT_BY_ROOT(ID) CITY_ID,CONNECT_BY_ROOT(NAME) CITY_NAME
FROM SC_DISTRICT
WHERE NAME='响滩镇' START WITH PARENT_ID=1CONNECT BY PRIOR ID=PARENT_ID
查询结果:
ID PARENT_ID NAME CITY_ID CITY_NAME
14 6 响滩镇 2 巴中市
- CONNECT BY子句伪列的应用
LEVEL:查询节点层次,从1开始。
CONNECT_BY_ISLEAF:查询节点是否是叶子节点,是则为1,不是则为0
SELECT ID, NAME, PARENT_ID, LEVEL, CONNECT_BY_ISLEAF
FROM SC_DISTRICTSTART WITH NAME='巴中市'CONNECT BY PRIOR ID=PARENT_ID ORDER BY ID;查询结果:
ID NAME PARENT_ID LEVEL CONNECT_BY_ISLEAF
2 巴中市 1 1 0
4 巴州区 2 2 1
5 通江县 2 2 1
6 平昌县 2 2 0
13 大寨乡 6 3 1
14 响滩镇 6 3 1
15 龙岗镇 6 3 1
16 白衣镇 6 3 1
- 查询递归路径
查询巴中市下行政组织递归路径
SELECT ID, NAME, PARENT_ID,SUBSTR(SYS_CONNECT_BY_PATH(NAME,'->'),3) NAME_PATH
FROM SC_DISTRICTSTART WITH NAME='巴中市'CONNECT BY PRIOR ID=PARENT_ID查询结果:
ID NAME PARENT_ID NAME_PATH
2 巴中市 1 巴中市
4 巴州区 2 巴中市->巴州区
5 通江县 2 巴中市->通江县
6 平昌县 2 巴中市->平昌县
13 大寨乡 6 巴中市->平昌县->大寨乡
14 响滩镇 6 巴中市->平昌县->响滩镇
15 龙岗镇 6 巴中市->平昌县->龙岗镇
16 白衣镇 6 巴中市->平昌县->白衣镇
oracle递归查询实例相关推荐
- windows下一个,OracleServiceXXX和Oracle 关系实例
其实,windows下的oracle,在oracle实例启动时,是全然依赖于 window服务中的OracleServiceXXX .这个XXX就是oracle的实例名(注意啊,不是数据库名称,而是实 ...
- 2. Oracle 数据库实例启动关闭过程
转载自: http://blog.csdn.net/leshami/article/details/5542983 Oracle数据库实例的启动,严格来说应该是实例的启动,数据库仅仅是在实例启动后进行 ...
- CentOS Linux 新建oracle数据库实例并连接
CentOS Linux 新建oracle数据库实例 安装好oracle之后,首先想到的那就是自己建一个库来看看效果喽. 创建的过程如下文章所说,http://blog.chinaunix.net/u ...
- Oracle数据库实例的创建、删除、修改
以SUSE10SP2.Oracle10gR2为例. 本文中的数据库实例这一称谓应该换做数据库更为准确,数据库可以理解为是一个物理的静态概念,主要包括一些物理存在的数据库文件,而数据库实例则是一个动态概 ...
- oracle监听 客户 实例,oracle 数据库实例 监听
创建Oracle数据库.数据库名与实例名与SID之间的关系(图文详解) 目录 目录 软件环境 前言 安装Oracle监听程序 启动停止监听程序 创建数据库 数据库名db_name 数据库实例名inst ...
- 修改linux下全局数据库名,linux/unix下修改oracle数据库实例名的方法
linux/unix下修改oracle数据库实例名的方法 2018年12月10日 | 萬仟网IT编程 | 我要评论 linux/unix下修改oracle实例名的方法 1.检查原来的数据库实例名 $ ...
- 在oracle 11gr2 grid独占模式下,如何使oracle数据库实例伴随OHAS的启动而启动?
这里有一台装有oracle 11gr2的虚拟机,其中的grid是以独占模式存在的,提供了ASM服务,数据库的数据文件都是存放在+DATA上面的.由于在安装的时候选择了独占模式,所以在ohas伴随系统启 ...
- Oracle 数据库实例启动关闭过程
--================================ -->Oracle 数据库实例启动关闭过程 --================================ /* Or ...
- 单实例oracle ha,Oracle单实例启动多个实例
Oracle单实例启动多个实例 多实例运行,单个实例就是一个数据库!一个数据库对应多个实例是RAC. Linux建立oracle的实例步骤: 1.在linux服务器的图形界面下,打开一个终端,输入如下 ...
最新文章
- 到底一台服务器能够支持多少TCP并发连接?
- priority_queue优先队列的用法总结
- 解决torch.cuda.is_available()为False的问题
- excel 两列模糊匹配给出结果_北大硕士给大脑植入Excel病毒,工作效率提升了好几倍...
- 1644E. Expand the Path
- Swagger2的使用
- matlab imagesc参数设置,[转载]matlab 中imagesc的用法
- java作业——Day007
- vue2.0 + vux (六)NewsList 资讯页 及 NewsDetail 资讯详情页
- kafka--Struct Streaming--mysql案例
- 魅蓝2 android 8,流水账评测魅蓝2
- 摄像头网络信号测试软件,工程宝如何测试摄像机
- 十分钟看懂AlphaGo的核心算法
- 网络收藏夹--用来收藏我经常访问的网站
- opengles之3D模型加载(obj模型文件)
- CTF_Web:长安杯-2021 Old But A Little New asuka题解
- asp.net mvc 实现判断用户是否登录的两种方式
- 如何修改SVN的地址
- 经验模态分解python_信号处理 - 经验模态分解 【1】
- CSDN 博客已式微?
热门文章
- 14、微信小程序——上传、预览、长按删除图片
- 显示器信号时有时无并无html,电脑开机显示器无信号、键盘鼠标不亮解决方法...
- 【转载】推荐20个超实用的免费PPT图标网站
- Centos Ubuntu 安装 gfortran
- 手机支付属于什么计算机应用领域,基于j2me的手机移动支付应用研究-计算机应用技术专业论文.docx...
- 2011 ATMEL AVR 校园设计大赛获奖名单
- 互联网支付系统整体架构
- 用python画爱心及代码演示
- iPad网游输入优化
- loadrunner12录制事件一直卡在11就不动了,大佬们,求助啊!!!