Oracle 分级查询

树形结构的数据:MGR=EMPNO

    树结构的数据存放在表中,数据之间的层次联系即父子联系,通过表中的列与列间的联系来描述,如EMP表中的EMPNO和MGR。EMPNO示意该雇员的编号,MGR示意领导该雇员的人的编号,即子节点的MGR值等于父节点的EMPNO值。在表中的每一行中都有一个示意父节点的MGR(除根节点外),通过每个节点的父节点,就能够确定整个树结构。

Oracle 分级查询_第1张图片

在Oracle数据库中,我们可以使用CONNECT BY 和START WITH配合SELECT来将数据之间的层级关系表现出来,其语法如下

SELECT [LEVEL], column, expr...
FROM table
[WHERE condition(s)]
[START WITH condition(s)]
[CONNECT BY PRIOR condition(s)] ;
  • LEVEL     :代表层级编号,由在树状结构中,每条数据所在节点距离根节点的距离所确定,初始值为1
  • START WITH    :指定遍历起始节点,可以指定任意节点为初始节点并以该节点为起始进行向下查找,可定义多个起始节点,或不定义起始节点Oracle 分级查询_第2张图片

Oracle 分级查询_第3张图片

Oracle 分级查询_第4张图片

  • CONNECT BY    :指定层次检索顺序,决定是自上而下检索还是自下而上检索

Oracle 分级查询_第5张图片

你可能感兴趣的:(sql,Oracle)