在oracle 中可以通过使用start with … connect by prior … 实现递归查询。如果你对递归查询很

模糊了话,或许下面的示例将会帮助你更好的理解oracle SQL 递归查询。

一、manually 方式实现的递归查询。

SQL> select employee_id,last_name,first_name,manager_id

2 from employees

3 where manager_id is null;

EMPLOYEE_ID LAST_NAME FIRST_NAME MANAGER_ID

———– ————– ————– ———-

100 King Steven

通过where 子句中的 manager_id is null 来确定一个递归查询的起点。

SQL> select employee_id,last_name,first_name,manager_id

2 from employees

3 where manager_id = 100;

EMPLOYEE_ID LAST_NAME FIRST_NAME MANAGER_ID

———– ————– ————– ———-

101 Kochhar Neena 100

102 De Haan Lex 100

114 Raphaely Den 100

120 Weiss Matthew 100

121 Fripp Adam 100

122 Kaufling Payam 100

123 Vollman Shanta 100

124 Mourgos Kevin 100

145 Russell John 100

146 Partners Karen 100

147 Errazuriz Alberto 100

EMPLOYEE_ID LAST_NAME FIRST_NAME MANAGER_ID

———– ————– ————– ———-

148 Cambrault Gerald 100

149 Zlotkey Eleni 100

201 Hartstein Michael 100

14 rows selected.

查询manager_id = 100 的雇员有那些,得到了一个结果集,oracle将会在这个结果集的基础上处理

这个结果集中的没一条记录,处理的方式和上面的方式是相同的,直到不能在进行递归下去了,处理

的流程将会返回到这个结果集中去取下一条记录要处理,如此反复直到把这个结果集中的每条记录都

处理完,最后返回给用户最终的结果集。

二、使用start with … connect by … 实现的递归查询。

SQL> ed

Wrote file afiedt.buf

1 select lpad(‘ ‘,level*2,’ ‘)||employee_id as emp_id,last_name,first_name,manager_id

2 from employees–level 指递归的深度。根节点为1,根据深度不断的自增1.这里用来控制缩进。

3 start with manager_id is null –指定递归查询中的根节点(开始节点)。

4 connect by prior employee_id = manager_id–prior 表示前面查询的结果集中的employee_id与当前查询中的manager_id 匹配。

5* order by emp_id desc

SQL> /

EMP_ID LAST_NAME FIRST_NAME MANAGER_ID

———————— ————– ————– ———-

100 King Steven

201 Hartstein Michael 100

149 Zlotkey Eleni 100

148 Cambrault Gerald 100

147 Errazuriz Alberto 100

146 Partners Karen 100

145 Russell John 100

124 Mourgos Kevin 100

123 Vollman Shanta 100

122 Kaufling Payam 100

121 Fripp Adam 100

EMP_ID LAST_NAME FIRST_NAME MANAGER_ID

———————— ————– ————– ———-

120 Weiss Matthew 100

114 Raphaely Den 100

102 De Haan Lex 100

101 Kochhar Neena 100

205 Higgins Shelley 101

204 Baer Hermann 101

203 Mavris Susan 101

202 Fay Pat 201

200 Whalen Jennifer 101

199 Grant Douglas 124

198 OConnell Donald 124

oracle 递归查询,Oracle SQL递归查询教程相关推荐

  1. oracle 递归查询,深入sql oracle递归查询

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

  2. sql oracle 递归查询语句,oracle递归函数 oracle中SQL递归查询

    关于oracle递归调用的自定义函数如何结束 比如存储过程a中有b,b中含a.用return结束判断,执行还是锁表,怎么解决 关于oracle递归调用的自定义函数如何结束 可以调用. C语言最基本的模 ...

  3. oracle sql循环判断语句怎么写,Oracle 非常详细的 PL/SQL入门教程,PL/SQL语法格式/循环语句/条件判断/异常处理...

    PL/SQL入门教程目录 Oracle PL/SQL入门教程,PL/SQL语法格式/循环语句/条件判断/异常处理 一.PL/SQL简介 1.PL/SQL简介 1.PL/SQl是过程语言PL与结构化语言 ...

  4. oracle一条语句递归查询父子关系

    1  建表: CREATE TABLE test_tree ( test_id INT NOT NULL, pid INT, test_val VARCHAR(10), PRIMARY KEY (te ...

  5. SQL 递归查询所有父子节点

    原 SQL 递归查询所有父子节点 2016年05月16日 22:57:16 名贤集 阅读数 21628 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net ...

  6. SQL递归查询知多少

    最近工作中遇到了一个问题,需要根据保存的流程数据,构建流程图.数据库中保存的流程数据是树形结构的,表结构及数据如下图: 仔细观察表结构,会发现其树形结构的特点: FFIRSTNODE:标记是否为根节点 ...

  7. SQL递归查询树型分类数据

    目录 前言 1.准备分类数据 2.递归原理 3.实现 4.结合mybatis查询 总结 前言 相信大家在处理业务的时候经常会遇到分类数据,当面对这种情况时该如何处理呢?在这里我使用了两种方式解决:一种 ...

  8. mysql 在不同的数据库间查询语句_有关数据库SQL递归查询在不同数据库中的实现方法...

    本文给大家介绍有关数据库SQL递归查询在不同数据库中的实现方法,具体内容请看下文. 比如表结构数据如下: Table:Tree ID Name ParentId 1 一级  0 2  二级 1 3  ...

  9. oracle 当前top sql,Oracle top 查询TOP SQL

    有时Oracle数据库服务器,系统CPU爆高,通过Top命令可以查看到占用CPU最高的进程 我们需要记住前几个TOP的pid号,带入下面的SQL,到数据库中查询运行的进程.服务器.用户.SQL.等待等 ...

最新文章

  1. pip install mysql-connector 安装出错
  2. 快速掌握MATLAB应用,只要从这一步开始!
  3. PostgreSQL 给数据库添加用户
  4. Spring Boot @ SpringBootApplication,SpringApplication类
  5. OneNote 安装代码高亮插件 NoteHightlight的安装及使用基础教程
  6. 黑马程序员---初学java建议(亲身经历)
  7. 图片验证码识别 python_Python识别字符型图片验证码
  8. python 时间序列异常值_干货 :时间序列异常检测
  9. thinkpad l470 一种键盘错乱解决方法
  10. c++win32项目 如何显示后再删除一个绘图_iMATLAB 绘图扩展函数系列 | 让你绘图更自由(进阶专辑开篇)!...
  11. 猿创征文|我在人间编程那些年
  12. vue3中播放视频和m3u8后缀的视频解决办法
  13. 又到年中,固定资产管理该何去何从?
  14. 使用标准C++ 生成一个循环输出数字格式化前面补零的简单demo
  15. 实践指南-网页生成PDF
  16. 数据分析入门:初识数据埋点(一)
  17. 2.18 haas506 2.0开发教程 - 阿里云M2M设备间通信 - 规则引擎/Topic消息路由(仅支持2.2以上版本)
  18. 铁通宽带真差,千万不能用。
  19. [bzoj 1143--CTSC2008]祭祀
  20. 2018年深圳计算机一级报考,2018年深圳公务员考试报名入口(1.2-1.8)

热门文章

  1. 智能分析网关AI安全帽识别技术在工地场景中的应用及意义
  2. 安全帽识别 安全帽佩戴效果 安全帽检测 yolov4安全帽识别 yolov3
  3. 咖啡汪笔记 —— 微服务架构下如何保证事务的一致性(InfoQ公开课)
  4. [Leetcode 963] 最小面积矩形 II
  5. Selenium爬虫实践:ajax请求抓包、浏览器退出
  6. 以价值论为中心重构哲学
  7. 在浏览器输入一个网址到得到页面的过程(详细)
  8. Docker有什么用?
  9. word表格设置大小随着内容变动
  10. 【转】UML建模系列文章总结