博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
connect by prior start with
阅读量:5949 次
发布时间:2019-06-19

本文共 936 字,大约阅读时间需要 3 分钟。

oracle 中 connect by prior 实现递归查询,基本语法如下:

SELECT * FROM tablenamewhere 
connect by prior
start with

以 Oracle 中表: employees 为例演示过程:

employees 中和树形结构有关的字段为  employee_id, manager_id。

截图表中部分数据并用树形结构表示出来:

说明:分支节点为manager,同时也是employee; 叶子节点不是 manager,仅为employee。

执行下面的 sql:

SELECT LEVEL,        e.employee_id,        e.manager_id  FROM employees e WHERE 1 = 1CONNECT BY PRIOR e.employee_id = e.manager_idSTART WITH e.employee_id = 101;

结果如下:

下面对代码加以分析:

-- 从 employee_id = 101开始,查询 manager_id 为 101 的节点,有:108-- 以 employee_id = 108 为父节点, 查询 manager_id = 108 的节点,有:109,110,111,112,113-- 101 -> 108 -> 109 ... 递归结束后,继续找 101 的其他子节点,有:200,203,204,205

1.以 prior 所在等式的一侧为父节点

CONNECT BY PRIOR e.employee_id = e.manager_id--即以 employee为父节点

2.start with 是递归查询的起始点

START WITH e.employee_id = 101-- 从 employee_id = 101 这个节点开始查询

3. where 条件会对查询的所有结果进行筛选

 

 

 

转载于:https://www.cnblogs.com/chenyongjun/p/connect_by_prior.html

你可能感兴趣的文章
tar.xz文件如何解压
查看>>
jquery 给textarea赋值,firefox下出现[object XMLDocument]
查看>>
我的友情链接
查看>>
2014年首届CCF软件能力认证试题 题目二
查看>>
c语言数据类型汇总
查看>>
部署Exchange 2010(二)首台MailBox服务器
查看>>
用好这块风水宝地--开博之语
查看>>
Jquery插件开发
查看>>
产品配置管理相关通知
查看>>
数据库相关算法 之 xxHash
查看>>
牛顿法/递归法实现开方的函数功能
查看>>
手势模型和Angular Material的实现
查看>>
Java转换txt文件编码(GBK转UTF-8)
查看>>
Redis-使用记录
查看>>
APICloud 微信授权登录
查看>>
Java Web开发自学笔记一:环境(tomcat、jdk的选择和安装)
查看>>
Cakephp requestAction用法
查看>>
疯狂Activiti6.0连载(13)DMN的XML规范
查看>>
2.Linux上安装MySQL 5.5 rpm
查看>>
网站资源
查看>>