文档章节

关于Oracle递归查询

r
 renhongjin
发布于 2015/06/02 11:35
字数 300
阅读 12
收藏 0

有这样一个表:DEPT

ID ID

PARENT_ID 父部门ID,顶级部门的父部门为null

DEPT_NAME 部门名称


如果要从顶级部门开始递归所有部门:


select level,a.* from DEPT a start with a.PARENT_ID is null
connect by prior a.ID=a.PARENT_ID



level:层次

start_with:入口部门

prior:前序遍历

ID=PARENT_ID:从入口部门开始往下递归

PARENT_ID=ID:从入口部门开始往上递归


了解了上述规则,则不难写出从某部门开始的所有下级部门:

select level,a.* from DEPT a start with a.ID = 3
	connect by prior a.ID=a.PARENT_ID


从某部门开始的上级部门:

select level,a.* from DEPT a start with a.ID = 3
	connect by prior a.PARENT_ID = a.ID


如果要在以上结果中进行排除,如排除当前部门,即某部门的上级部门(注意where筛选在递归结果之后进行):

select level,a.* from DEPT a
	where a.ID != 3
	start with a.ID = 3
	connect by prior a.PARENT_ID = a.ID


如果还想按层级显示部门名称,如:

ID    NEW_DEPT_NAME              DEPT_NAME

3     部门A/部门A-1/部门A-1-1      部门A-1-1

可以使用如下语句:

select level,
	ltrim(sys_connect_by_path(a.DEPT_NAME,'',''),'','') NEW_DEPT_NAME,
	a.*
	from DEPT a
	start with a.ID = 3
	connect by prior a.ID=a.PARENT_ID


本文转载自:http://6tail.cn/npress/action-Article/detail?id=1411022156843000

共有 人打赏支持
r
粉丝 1
博文 14
码字总数 744
作品 0
攀枝花
oracle中用START WITH...CONNECT BY PRIOR子句实现递归查询

今天发现在oracle中的select语句可以用START WITH...CONNECT BY PRIOR子句实现递归查询,connect by 是结构化查询中用到的,其基本语法是: select ... from tablename start with cond1 con...

zhengjunbo
2013/06/04
0
0
Oracle中start with...connect by子句的用法

Oracle中start with...connect by子句的用法Oracle中start with…connect by prior子句用法 connect by 是结构化查询中用到的,其基本语法是:select … from tablenamestart with 条件1conn...

什么是程序员
2016/11/11
5
0
oracle递归查询

今天发现在oracle中的select语句可以用START WITH...CONNECT BY PRIOR子句实现递归查询,connect by 是结构化查询中用到的,其基本语法是: select ... from tablename start with cond1 con...

紫枫咖啡
2014/05/12
0
0
oracle start with 函数

Oracle中start with…connect by prior子句用法 connect by 是结构化查询中用到的,其基本语法是: select … from tablename start with 条件1 connect by 条件2 where 条件3; 例: select...

yanggaoq
2013/01/14
0
2
对于oracle进行简单树查询(递归查询)

对于oracle进行简单树查询(递归查询),很早想总结了,发现了一个,转过来 DEPTID PAREDEPTID NAME NUMBER NUMBER CHAR (40 Byte) 部门id 父部门id(所属部门id) 部门名称 通过子节点向根节点追...

晨曦之光
2012/03/09
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

day60-20180818-流利阅读笔记-待学习

钉钉:工作的归工作,生活的…也归工作? 毛西 2018-08-18 1.今日导读 你用过“钉钉”么?被公司要求使用钉钉的感受是如何的呢?这款阿里巴巴旗下的移动办公社交平台在弯道超车微信、为许多企...

aibinxiao
47分钟前
6
0
Kubernetes的HTTPS和证书问题,汇总

通过Kubernetes建立服务网站,需要干的事情和HTTPS和证书问题,汇总如下: 建立Nginx服务器 搞服务器第一步,Ubuntu 18.04设置静态IP 安装Nginx服务。 Kubernetes的deployment使用 创建服务,...

openthings
今天
2
0
php 使用redis锁限制并发访问类

1.并发访问限制问题 对于一些需要限制同一个用户并发访问的场景,如果用户并发请求多次,而服务器处理没有加锁限制,用户则可以多次请求成功。 例如换领优惠券,如果用户同一时间并发提交换领...

豆花饭烧土豆
今天
0
0
Linux环境搭建 | 手把手教你配置Linux虚拟机

在上一节 「手把你教你安装Linux虚拟机」 里,我们已经安装好了Linux虚拟机,在这一节里,我们将配置安装好的Linux虚拟机,使其达到可以开发的程度。 Ubuntu刚安装完毕之后,还无法进行开发,...

良许Linux
今天
0
0
(三)Nginx配置·续

概述 前文写了关于Nginx环境配置,但是还没有完,接下来将会继续讲三个相关的配置 主要是以下三个 1.Nginx访问日志 2.Nginx日志切割 3.静态文件不记录日志和过期时间 Nginx访问日志 1.先看看...

杉下
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部