层次化查询,顾名思义就是把查询结果有层次的呈现出来。层次化查询结果类似于树状结构,最顶端的是“根节点”,下面是“父节点”,没有子节点的是“叶节点”。一个公司的组织结构图就是很好的例子。

为了让一个或多个表具有层次关系,必须使用相关的字段将表关联起来。比如HR用户下的employees表中的employee_id和manager_id列。

基本语法为:

[START WITH condition1] CONNECT BY condition2

START WITH condition1:用来指定根节点,condition1中可以加子查询,所以满足condition1的结果都会被用作根节点。

CONNECT BY condition2:condition2中必须包含PRIOR关键字,用来指定列是来自父行。PRIOR可以位于比较操作符的任何一方。condition不能包含子查询。

如:

SQL> select employee_id,manager_id,first_name,last_name,hire_date

2  from employees

3  start with manager_id is null

4  connect by prior employee_id=manager_id;

EMPLOYEE_ID MANAGER_ID FIRST_NAME           LAST_NAME                 HIRE_DATE

----------- ---------- -------------------- ------------------------- -------------------

100            Steven               King                      2003-06-17 00:00:00

101        100 Neena                Kochhar                   2005-09-21 00:00:00

108        101 Nancy                Greenberg                 2002-08-17 00:00:00

109        108 Daniel               Faviet                    2002-08-16 00:00:00

110        108 John                 Chen                      2005-09-28 00:00:00

111        108 Ismael               Sciarra                   2005-09-30 00:00:00

112        108 Jose Manuel          Urman                     2006-03-07 00:00:00

113        108 Luis                 Popp                      2007-12-07 00:00:00

200        101 Jennifer             Whalen                    2003-09-17 00:00:00

203        101 Susan                Mavris                    2002-06-07 00:00:00

为了知道当前查询树状结构所处的层次,可以使用level伪列。加入level伪列后显示如下。

SQL> select level,lpad(' ',2*(level-1))||last_name "EmpName",hire_date,salary

2  from employees

3  start with manager_id is null

4  connect by manager_id=prior employee_id;

LEVEL EmpName         HIRE_DATE               SALARY

---------- --------------- ------------------- ----------

1 King            2003-06-17 00:00:00      24000

2   Kochhar       2005-09-21 00:00:00      17000

3     Greenberg   2002-08-17 00:00:00      12008

4       Faviet    2002-08-16 00:00:00       9000

4       Chen      2005-09-28 00:00:00       8200

4       Sciarra   2005-09-30 00:00:00       7700

4       Urman     2006-03-07 00:00:00       7800

4       Popp      2007-12-07 00:00:00       6900

3     Whalen      2003-09-17 00:00:00       4400

3     Mavris      2002-06-07 00:00:00       6500

3     Baer        2002-06-07 00:00:00      10000

3     Higgins     2002-06-07 00:00:00      1200

【SQL】CONNECT BY 层次化查询相关推荐

  1. 数据库学习笔记---SQL基础-->层次化查询(START BY ... CONNECT BY PRIOR)

    SQL基础-->层次化查询(START BY ... CONNECT BY PRIOR) 技术qq交流群:JavaDream:251572072  教程下载,在线交流:创梦IT社区:______ ...

  2. SQL基础--层次化查询(START BY ... CONNECT BY PRIOR)

    为什么80%的码农都做不了架构师?>>>    --====================================================== --SQL基础--& ...

  3. SQL高级查询(层次化查询,递归)

    SQL 高级查询 前面我们写了一下 SQL 的极简入门,今天来说点高级查询.没看到的朋友可以点击下面链接查看. 1 小时 SQL 极速入门(一) 1 小时 SQL 极速入门(二) 1 小时 SQL 极 ...

  4. mysql 层次化查询_SQL高级查询(层次化查询,递归)

    SQL 高级查询 层次化查询 层次化结构可以理解为树状数据结构,由节点构成.比如常见的组织结构由一个总经理,多个副总经理,多个部门部长组成.再比如在生产制造中一件产品会有多个子零件组成.举个简单的例子 ...

  5. Linq to Sql: 集成数据库语言查询之一

    Linq to Sql: 集成数据库语言查询之一 2007-09-11 11:30:28 来源:天极yesky 作者:随风流月 带您探索"CRUD "操作-创建,接收,更新与删除, ...

  6. oracle查询第三行,oracle层次化查询(行政区划三级级联)

    oracle层次化查询(行政区划三级级联) 作者:小涵 | 来源:互联网 | 2018-07-15 10:38 阅读: 1975 现在将上面的行政区划按代码分为三个级别:省(后四位为0)市(后两位为0 ...

  7. C#对SQL数据表的查询、添加、修改、删除数据

    一.整体配置:"增.删.改.查"四操作 using System; using System.Collections.Generic; using System.Linq; usi ...

  8. SQL Server Management Studio 查询中使用 SQLCMD 模式

    从 SQL Server 2005 开始,可以在 SQL Server Management Studio 查询编辑器中使用 SQLCMD 模式执行 TSQL.要在查询编辑器中编写或编辑 SQLCMD ...

  9. ylb:SQL 表的高级查询-多表连接和子查询

    ylbtech-SQL Server: SQL Server-表的高级查询-多表连接和子查询 SQL Server 表的高级查询-多表连接和子查询. 1,ylb:表的高级查询-多表连接和子查询 返回顶 ...

最新文章

  1. DOS文件转换成UNIX文件格式详解
  2. C++默认参数注意事项
  3. 如何为网站增加索引,促进网站SEO优化?
  4. Original error was: DLL load failed: 找不到指定的模块。--解决办法
  5. 职称计算机windows 7,2017职称计算机考试Windows训练题
  6. linux软件读取不到空间,Linux下Oracle软件、数据文件等所在的磁盘分区空间不足的解决思路...
  7. 数据仓库 和挖掘的步骤 - oracle
  8. 第一课~Django~简介
  9. 在Windows 7 (SP1)上安装Visual Studio 2015
  10. java21天打卡Day13-正则表达式
  11. 2018-08-06-Python全栈开发day35-day36-select
  12. mdt 计算机名_MDT通过PowerShell脚本自定义变量(自定义计算机名)
  13. 过滤钩子驱动程序一(微软DDK文档,FLASHSKY翻译) (转)
  14. 《跨越鸿沟》中的提到的五类用户
  15. 施一公:无论什么学科,最不重要的就是智商
  16. 旧手机改文件储存服务器,旧手机改云服务器
  17. 图片轮播实现示例代码
  18. MGTV提取Ticket-保姆级教程
  19. VSS无法访问 (0x80072EFD) 转载
  20. eBay、亚马逊、Lazada、Shopee、速卖通、美客多等跨境电商平台,测评自养号需要满足什么条件?listing如何优化?

热门文章

  1. VS2012下基于Glut 矩阵变换示例程序2:
  2. Eclipse用法和技巧九:自动添加try/catch块2
  3. 浅谈UWB室内定位(三)
  4. oracle占用内存 100,System表空间占用率100%,管理Oracle系统审计
  5. ScintillaNET的应用
  6. Windows 系统环境变量大全
  7. P4055 [JSOI2009]游戏
  8. 8个超炫酷的jQuery相册插件欣赏
  9. Linux服务器开发环境搭建 Nginx+PHP+MongoDB
  10. 订单查询管理系统Silverlight4(预告)