文档章节

层次化查询

海贼爱音乐
 海贼爱音乐
发布于 2017/08/15 16:15
字数 400
阅读 45
收藏 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
博文 87
码字总数 22611
作品 0
广州
CEO
私信 提问
ModeShape 简要

ModeShape 是一个分布式的,层次化的,事务的,一致的数据存储, 支持查询,全文检索, 事件, 版本化, 以及灵活的,动态模式. 它非常快, 可用性搞, 极易伸缩, 并且100%开源, 由Java开发. 客户端可以...

麦地兜兜
2012/12/01
1K
0
基于Hadoop生态圈的数据仓库实践 —— 进阶技术(六)

六、维度层次 大多数维度都具有一个或多个层次。例如,日期维度就有一个四级层次:年、季度、月和日。这些级别用date_dim表里的列来表示。日期维度是一个单路径层次,因为除了年-季度-月-日这...

wzy0623
2016/07/25
0
0
pureXML的技术应用及展望

pureXML技术及混合型数据库的出现,超越了关系型数据库固有的局限性,为数据库的应用及开发开辟了新的领域。其意义不仅仅是提供了一种存储XML数 据的更有效的方式,可用于广泛使用XML数据的各...

红薯
2009/03/18
0
0
HAWQ取代传统数仓实践(十八)——层次维度

一、层次维度简介 大多数维度都具有一个或多个层次。例如,示例数据仓库中的日期维度就有一个四级层次:年、季度、月和日。这些级别用date_dim表里的列表示。日期维度是一个单路径层次,因为...

wzy0623
2017/06/12
0
0
维度处理-数据仓库-读书笔记(四)

数据仓库中如何使用一致性维度集成 一致性维度 1,当不同的维度表的属性具有相同的列名和领域内容时候,称为维度具有一致性 2,有利于不同事实表的合并到同一报表中去 3,在一致性维度的前提...

数据僧
08/22
0
0

没有更多内容

加载失败,请刷新页面

加载更多

day152-2018-11-19-英语流利阅读-待学习

外媒看吴亦凡刷榜事件 Lala 2018-11-19 1.今日导读 近日,吴亦凡的专辑在国外陷入了刷榜风波,他的新专辑霸占了单曲榜前三名,并且前十名他占据了七席,力压美国乐坛巨星 Lady Gaga 和 A 妹,...

飞鱼说编程
33分钟前
7
0
开源 java CMS - FreeCMS2.8 微信管理 群发图文消息

项目地址:http://www.freeteam.cn/ 群发图文消息 管理员可以在这里群发图文消息 此列表只提取已审核并且带信息图片的数据! 选择需要群发的消息,点击“群发图文消息”按钮。 微信的限定: ...

freeteam
42分钟前
1
0
Beautiful Soup

定义 Python中的一个库,主要用于从网页爬取数据; 安装 pip install beautifulsoup4 四大对象 Beautiful Soup将复杂的HTML文档转换成树形结构,树中的每个节点都是Python对象,对象可归纳为...

村雨1943
53分钟前
5
0
Visual Studio 昨日发布新版本:增加实时同步编程、共同调试

多名开发者可以在同一个项目中编程,在编写代码和调试代码时只需发送一个 URL 网址,就能邀请他人参与协作,而且无需重新配置开发环境和安装任何附加包。该服务支持 Windows、Mac 与 Linux ...

linuxCool
56分钟前
7
0
发现一种不错的学习方法

这是在《软技能,代码之外的生存之道》所看到的一种学习方法,感觉这个理念不错,分享出来,共勉。 我的「十步学习法」 多年以来,我都承受着巨大的压力:快速学习新技术、新编程语言、新框架...

firepation
56分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部