文档章节

层次化查询

海贼爱音乐
 海贼爱音乐
发布于 2017/08/15 16:15
字数 400
阅读 49
收藏 0

行业解决方案、产品招募中!想赚钱就来传!>>>

层次化查询,即树型结构查询,是SQL中经常用到的功能之一,通常由根节点,父节点,子节点,叶节点组成。

SELECT [LEVEL] ,column,expression,...
FROM table_name
[WHERE where_clause]
[[START WITH start_condition] [CONNECT BY PRIOR prior_condition]];

CONNECT_BY_ISCYCLE:伪列,如果当前行有一个子行,且子行又是当前行的祖先行,CONNECT_BY_ISCYCLE返回1,否则返回0。只有在CONNECT BY从句中指定了NOCYCLE参数,才能指定CONNECT_BY_ISCYCLE。由于CONNECT BY存在循环数据,NOCYCLE能使Oracle返回查询结果,否则将查询失败。
CONNECT_BY_ISLEAF:伪列,如果当前行是CONNECT BY条件定义树的叶子节点,CONNECT_BY_ISLEAF伪列返回1,否则返回0。该信息也表明了一个给定的行是否可以进一步扩张,表现出更多的层次。
LEVEL:伪列,用于表示树的层次
start_condition:层次化查询的起始条件
prior_condition:定义父节点和子节点之间的关系,PRIOR指定父节点。作为运算符,PRIOR和加(+)减(-)运算的优先级相同。condition ... PRIOR expr = expr 或者 ... expr = PRIOR expr

例子使用Oracle的示例用户HR用户

SELECT EMPLOYEE_ID,FIRST_NAME,MANAGER_ID,DEPARTMENT_ID FROM EMPLOYEES;

图片说明

  1. 从根节点开始遍历
SELECT LEVEL,EMPLOYEE_ID,FIRST_NAME,MANAGER_ID,DEPARTMENT_ID FROM EMPLOYEES
START WITH EMPLOYEE_ID=100 CONNECT BY PRIOR EMPLOYEE_ID=MANAGER_ID;

输入图片说明
2. 从非根节点开始遍历

SELECT LEVEL,EMPLOYEE_ID,FIRST_NAME,MANAGER_ID,DEPARTMENT_ID FROM EMPLOYEES
START WITH FIRST_NAME='Lex' CONNECT BY PRIOR EMPLOYEE_ID=MANAGER_ID;

输入图片说明
3. 从下向上遍历树。交换父节点与子节点在CONNECT BY PRIOR子句中的顺序

SELECT LEVEL,EMPLOYEE_ID,FIRST_NAME,MANAGER_ID,DEPARTMENT_ID FROM EMPLOYEES
START WITH EMPLOYEE_ID=105 CONNECT BY PRIOR MANAGER_ID=EMPLOYEE_ID;

输入图片说明

这篇文章写的更清楚

上一篇: JDeveloper快捷键
下一篇: Hello, World!
海贼爱音乐
粉丝 1
博文 82
码字总数 19507
作品 0
广州
CEO
私信 提问
加载中
请先登录后再评论。
开源数据访问组件--Smark.Data

Smark.Data是基于Ado.net实现的数据访问组件,提供基于强类型的查询表达式进行灵活的数据查询,统计,修改和删除等操作;采用基于条件驱动的操作模式,使数据操作更简单轻松;内部通过标准SQL...

泥水佬
2013/03/12
2.6K
0
图形化的 IDE--LiveCode

LiveCode是一个图形化的IDE,允许用户通过拖放控件并编写代码,来创建桌面或移动应用程序(支持Windows、Mac OS、Linux、iOS和Android平台)。LiveCode受苹果HyperCard的启发,采用一种基于英...

匿名
2013/04/12
7.1K
0
超快的css selector引擎--kquery 2.0

kquery是一款基于javascript完整实现css3选择器引擎. 兼容所有主流浏览器ie6+/chrome/firefox/opera/safari, 压缩和gzip之后仅8kb大小。智能编译引擎优化去除不必要的逻辑, 查询速度远胜于...

aaron.xiao
2012/10/23
667
0
CSS 选择器--Q.js

1, 和Sizzle的兼容 Q(expr, context, result, seed) Q.matches 支持Sizzle特别的setFilter伪类如:even,:first,:last,:lt... 支持复杂的:not和:has选择器(和sizzle一样) 2, 结果的正确性 Si...

hackwaly
2012/10/23
4.6K
0
样式化 iOS 应用--NUI

NUI 可以让你通过一个样式表对 iOS 应用进行外观定制,类似 CSS。你能创建在多个应用中重用的样式,而且使用规则类似 CSS,例如设置 ButtonBorderColor 为 #CCCCCC,或者使用变量 @primaryFo...

匿名
2012/12/04
8.7K
1

没有更多内容

加载失败,请刷新页面

加载更多

开源FPGA单板iCESugar

随着产业的发展,近年来FPGA越来越得到市场的重视,5G、矿机、人工智能、图像识别、risc-v、通信等众多领域均可见到FPGA的身影,目前比较知名的FPGA厂商有xilinx、altera、lattice等,其中x...

whoisliang
40分钟前
6
0
合并记录帮助文档

合并记录步骤用于将两个不同来源的数据合并,这两个来源的数据分别为旧数据和新数据;该步骤将旧数据和新数据按照指定的关键字匹配、比较、合并,并显示差异信息。接下来就详细介绍一下该步骤...

osc_slnrw1du
40分钟前
19
0
Spark之RDD转换算子(transformation)大全

前面已经给大家讲过RDD原理,今天就给大家说说RDD的转换算子有哪些,以便大家理解。 对于转换操作,RDD的所有转换都不会直接计算结果,仅记录作用于RDD上的操作,当遇到动作算子(Action)时...

osc_3nr2bq5w
41分钟前
11
0
自定义常量数据帮助文档

自定义常量数据步骤主要用于增加自定义字段和行集数据到流中,可增加多个字段并为每个字段赋予行集的值。步骤配置信息如图1所示。 图1 自定义常量数据步骤配置信息 下文详细解释各控件的含义...

osc_r9wwwi0j
42分钟前
10
0
Linux安装配置ftp(Ceonts 7)

1、安装vsftpd yum -y install vsftpd (我这里已经安装好了,只要不报错即安装成功) 安装完成后可以在/etc/vsftpd目录下看到vsftpd.conf 文件,这是vsftp的配置文件。 2、 添加一个ftp用户...

osc_tko37abm
43分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部