有这样一个表: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

关于oracle 递归生成,关于Oracle递归查询相关推荐

  1. oracle 随机生成数字,Oracle生成随机码

    本人网站交友乐www.jyoule.com 需要经常生成随机的活动码,用于制作卡片密码或通过网络发送.活动码的生成规则是采用唯一的字符串开头后面是随机数字,比如AZ00001.使用oracle产生活动 ...

  2. oracle能否生成mdb,oracle怎么导入.mdb文件

    匿名用户 1级 2015-12-09 回答  导出 导出具体的分为:导出表,导出方案,导出数据库三种方式. 导出使用exp命令来完成的,该命令常用的选项有: userid: 用于指定执行导出操作的用 ...

  3. oracle批量生成索引,ORACLE迁移时批量导出索引、存储过程,表结构等

    [toc] ORACLE迁移中的一些经验(一)批量导出sequence 批量导出squence 在网上找到这样一条语句: select 'create sequence ' || sequence_n ...

  4. 如何快速在oracle内生成数据,[Oracle]快速生成大量模拟数据的方法

    快速生成大量模拟数据的方法: create table TEST(id integer, TEST_NUMBER NUMBER(18,6)); insert into TEST select i+j, ...

  5. oracle快速生成序列号,Oracle实现自定义序列号生成

    实际工作中,难免会遇到序列号生成问题,下面就是一个简单的序列号生成函数 (1)创建自定义序列号配置表如下: --自定义序列 create table S_AUTOCODE ( pk1          ...

  6. oracle怎么生成osf,Oracle技术之Linux 建立软raid

    1.Raid定义 RAID,全称Redundant Array of Inexpensive Disks,中文名为廉价磁盘冗余阵列.RAID可分为软RAID和硬RAID,软RAID是通过软件实现多块硬 ...

  7. Oracle 递归案例

    Oracle 递归案例 Oracle 递归案例 前提准备 递归查询某个部门(ROOT)的所有子级部门 递归查询某个部门(A)的所有子级部门 递归查询某个部门(B02)的所有上级部门 递归查询某个部门( ...

  8. oracle用一个字段往上递归,深入sql oracle递归查询

    获取数据库所有表名,表的所有列名 select name from sysobjects where xtype='u' select name from syscolumns where id=(s ...

  9. oracle 11g circuits 参数,递归:在 Oracle Database 11g 第 2 版中查询层次结构数据

    开发人员:SQL 递归: 在 Oracle Database 11g 第 2 版中查询层次结构数据的快速入门 作者:Tim Hartley 2010 年 2 月发表 递归数据库处理,也称为材料清单 或 ...

最新文章

  1. ConfigUtil读取配置文件
  2. android studio failed to open zip file,Android Studio出现Failed to open zip file问题的解决方法...
  3. java指定长度数组长度_Java声明数组时不能指定其长度
  4. MPEG创始人、主席:MEPG商业模式已经破裂
  5. PHP学习之[第11讲]新浪微博开放平台 PHP 与 OAuth 接口(1)
  6. mysql 查看表格scott_mysql查询学习第一天,针对scott
  7. 功能引导 android,Flutter实现App功能引导页
  8. Windows 下音频数据采集和播放
  9. 【OpenCV】OpenCV实战从入门到精通之 -- 指针访问、迭代器iterator、动态地址计算配合at元素
  10. php手机关闭程序,php用手机关闭电脑的方法
  11. Linux常用命令及笔记
  12. Postgres无法连接到服务器
  13. ANN 神经网络介绍
  14. 时隔二十年,《程序员修炼之道》出第二版了!
  15. CODE ---代码助手 (保存代码、搜代码、生成网页、自由界面)
  16. 新手如何搭建淘宝客网站,实用教程
  17. ERROR CoarseGrainedExecutorBackend: RECEIVED SIGNAL TERM
  18. Web网页分享到新浪微博与QQ空间链接
  19. Windows 7自带的显示器校准
  20. ERP学习网站,搜集中...

热门文章

  1. 读书笔记--数据治理之法
  2. android充电器给mac充电,[实测]哪些Android手机充电器也可以给iPhone 12快充?
  3. 用A4折出正方形,等边三角形,正八边形,正六边形,正五边形,正七边形
  4. Xshell 数字小键盘输入无效?
  5. 当事与愿违的时候,选择自己心中所想
  6. 矢量图标文件格式设计
  7. Outlook 解决“附件大小超出了允许的范围”
  8. 查看服务器端口是否开放
  9. Android 真机运行项目提示:应用程序安装异常(-15)
  10. 耳机插在电脑上只有按住接听键,才能正常听到声音怎么解决