ORACLE分级查询
来源:互联网 发布:篮球鞋 知乎 编辑:程序博客网 时间:2024/04/28 10:17
分级查询主要用于查询树形结构的记录。树形结构的数据存放在表中,数据之间的层次关系即父子关系,通过表中的列与列间的关系来描述。
树形结构示例:
查询雇员表中员工编号、姓名及员工负责人,结果如图1所示。从结果中可以发现,Hardy和Rory的负责人是John,John的负责人是Donald;Eric和Kary的负责人是Harky,Harky的负责人是Donald,最终可以形成一张树形结构图,如图2所示。
图1
图2
分级查询语法格式:
SELECT [LEVEL], COLUMN, ...FROM TABLE[WHERE CONDITION(S)][START WITH CONDITION(S)][CONNECT BY PRIOR COLUMN1 = COLUMN2] ;
1.LEVEL代表层级。 在具有树结构的表中,每一行数据都是树结构中的一个节点,由于节点所处的层次位置不同,所以每行记录都可以有一个层号。层号根据节点与根节点的距离确定。不论从哪个节点开始,该起始根节点的层号始终为 1 ,根节点的子节点为 2 , 依此类推。
2.START WITH定义查找起始节点。在自顶向下查询树结构时,不但可以从根节点开始,还可以定义任何节点为起始节点,以此开始向下查找。这样查找的结果就是以该节点为开始的结构树的一枝。 不但可以指定一个根节点,还可以指定多个根节点。START WITH 子句为可选项,若该子句被省略,则表示所有满足查询条件的行作为根节点。
3.CONNECT BY 子句指定层次检索的顺序。 根据PRIORY 运算符放置在连接关系的位置,从而确定查找树结构是的顺序是自顶向下还是自底向上。CONNECT BY PRIOR PARENT KEY= CHILD KEY,表明顺序是自顶向下;CONNECT BY PRIOR CHILD KEY= PARENT KEY,表明顺序是自底向上。
分级查询(自顶向下)示例:
以员工编号是E005为根节点,自顶向下查询节点下所有的节点层级、员工编号、姓名及负责人编号,结果如图3所示。图3
分级查询(自底向上)示例:
以员工编号是E002为根节点,自底向上查询节点所在分支所有的节点层级、员工编号、姓名及负责人编号,结果如图4所示。
图4
对于分级查询的结果集节点的裁剪有两种方式,一种方式是在WHERE子句中指定过滤条件,另一种方式是在CONNECT BY子句中指定过滤条件。两种方式的区别是,WHERE子句中指定过滤条件,只能裁剪掉满足条件的节点,而CONNECT BY子句中指定过滤条件,不仅能够裁剪掉满足条件的节点,而且能裁剪掉满足条件节点所在的分支后的所有后代节点或前辈节点。
裁剪节点(WHERE子句):
在WHERE子句中指定过滤条件,结果集中不仅删除了员工编号是E004的记录,而且删除了E004节点的后代节点E002、E003,结果如图5所示。
图5
裁剪节点(CONNECT BY子句):
在WHERE子句中指定过滤条件,结果集中不仅删除了员工编号是E004的记录,而且删除了E004节点的后代节点E002、E003,结果如图6所示。
图6
2 0
- ORACLE分级查询
- Oracle 分级查询
- 简单的Oracle的树分级查询
- Oracle分级查询(CONNECT BY PRIOR)
- oracle 在报表查询是体现分级补充空格
- 分级查询的实现
- oracle分级取数据
- Oracle无限分级下查询指定分类下所有子分类Sql
- Oracle无限分级下查询指定分类下所有子分类
- 无限分级数量查询优化
- 分级查询(Hierarchical Path-Finding )
- SQL学习(二) 分级检索查询
- hibernate中实现运用分级查询 2
- hibernate中实现运用分级查询 1
- 一句SQL完成动态分级查询
- 一句SQL完成动态分级查询
- Oracle SYS_CONNECT_BY_PATH 分级记录获取全路径
- Oracle分级排序函数Rank、Dense_Rank、Row_Number比较
- 编译go源代码碰到找不到pkt的问题
- sqlserver导入oracle数据第一步
- sublime text3 添加插件
- C语言练习——念整数
- java反射获取构造器以及调用构造器创建对象
- ORACLE分级查询
- A*搜索算法
- spring boot初玩(jdbc,logback,mysql,dubbo)
- How Bayesian inference works
- 分布式服务之Dubbo_01_基础框架搭建
- C++ count和count_if的使用
- 浏览器对象模型BOM之window对象
- AndroidAnnotations配置使用
- 将RGB图片和视差图D融合成四通道RGBD图片