SELECT...
[START WITH 初始化条件(根结节点的条件)]
CONNECT BY PRIOR 递归的条件
[ORDER SIBLINGS BY 排序条件]
关键字解释:
START WITH :用来做为根结节点的条件
CONNECT BY :表示父子关系成立的条件
ORDER SIBLINGS BY :在层次结构中排序,而不会打破整个树结构
例:
表结构:
ID NUMBER(19) Y
PARENT_ID NUMBER(19) Y
ORDER_ID NUMBER(19)
表中数据如下:
ID PARENT_ID ORDER_ID
10 1
100 10 2
101 100 3
102 100 4
103 100 5
104 100 6
105 100 7
200 10 8
201 200 9
202 200 10
203 200 11
204 200 12
205 200 13
10101 101 14
10102 101 15
查询语句:select t.* from tree_table t START WITH t.parent_id IS NULL CONNECT BY PRIOR t.id=t.parent_id
结果如下:
ID PARENT_ID ORDER_ID
10 1
100 10 2
101 100 3
10101 101 14
10102 101 15
102 100 4
103 100 5
104 100 6
105 100 7
200 10 8
201 200 9
202 200 10
203 200 11
204 200 12
205 200 13
查询后排序:select t.* from tree_table t START WITH t.parent_id IS NULL CONNECT BY PRIOR t.id=t.parent_id ORDER SIBLINGS BY t.order_id DESC
结果如下:
ID PARENT_ID ORDER_ID
10 1
200 10 8
205 200 13
204 200 12
203 200 11
202 200 10
201 200 9
100 10 2
105 100 7
104 100 6
103 100 5
102 100 4
101 100 3
10102 101 15
10101 101 14
分享到:
相关推荐
Oracle 数据库树形结构用法总结,例如SYS_CONNECT_BY_PATH 、START WITH . . . CONNECT BY . . .等具体语法介绍
Oracle 中的树结构查询基于 CONNECT BY 语句,该语句可以根据父子关系将数据连入树型结构中。 CONNECT BY 语句的基本格式如下: SELECT 。。。CONNECT BY {PRIOR 列名 1=列名 2|列名 1=PRIOR 列名 2}[START WITH]...
例如,它可以将每个节点的路径作为字符串返回,便于理解和分析树结构。 在实际应用中,例如组织结构的展示,我们可以创建一个包含部门信息的表`SYS_DEPT`,其中`dept_id`为主键,`par_dept_id`表示父级部门ID,以此...
`CONNECT BY`还可以使用条件来限制遍历的路径,比如只查询某个特定部门的员工树结构,可以添加`WHERE`子句: ```sql SELECT * FROM emp START WITH EMPNO = 7839 CONNECT BY PRIOR EMPNO = MGR WHERE DEPTNO = 20;...
在处理复杂的数据查询时,尤其在数据具有层次性或树状结构的情况下,Oracle提供了一种高效的方法——树结构查询。本篇文章将深入探讨Oracle如何处理这类查询,并通过一个具体的文档案例进行解析。 首先,我们要了解...
树结构查询在Oracle中可以通过`CONNECT BY`和`START WITH`子句实现。`CONNECT BY`子句用于定义层次关系,它表明数据将按照层次顺序检索,通过指定的列(如EMPNO和MGR)连接形成树状结构。`PRIOR`关键字用于指示父...
Oracle树形结构查询,层次查询,hierarchical retrieval Oracle中的树形结构查询,也被称为层次查询或hierarchical retrieval,是一种获取树形结构数据的方法。这种方法可以将数据组织成树形结构,具有层次关系的...
在数据库系统中实现树结构表递归查询是一种常见的需求,它允许我们查询出具有层级关系的数据。ORACLE、MSSQL(Microsoft SQL Server)、MYSQL是三大主流数据库系统,它们各自提供了不同的方式来实现递归查询。 首先...
Oracle在`CONNECT BY`查询过程中自动提供了一个`LEVEL`伪列,它表示当前行在树结构中的深度,从1开始计数。这个信息可以用于过滤或在结果集中显示层级。 5. **示例**: 假设有一个`DEPARTMENTS`表,包含`...
在 Oracle 中,查询树形结构可以使用 START WITH...CONNECT BY PRIOR 子句实现递归查询。其基本语法是: SELECT * FROM tablename START WITH cond1 CONNECT BY cond2 WHERE cond3; 其中,COND1 是根结点的限定...
树状结构查询主要依赖于`START WITH`和`CONNECT BY PRIOR`这两个关键语法。`START WITH`用于指定查询的起始节点,而`CONNECT BY PRIOR`则定义了节点之间的关系,从而实现对树状结构的遍历。 #### 示例:以KING为根...
Oracle 数据库在处理树形数据结构时,提供了一种强大的查询方法,即 `SELECT...START WITH...CONNECT BY...PRIOR` 语法。这种查询模式允许我们以递归方式遍历和检索具有层级关系的数据,例如组织结构、产品分类或者...
oracle菜单树查询 使用实例 使用START WITH CONNECT BY PRIOR子句实现递归查询
Oracle树查询是数据库管理中处理层次结构数据的重要技术,它主要依赖于`SELECT...START WITH...CONNECT BY...PRIOR`的语法。这个语法允许我们按照树的结构来组织和检索数据,尤其适用于表示组织结构、目录层级或者...
Connect By是Oracle用来进行层次查询的语法结构,其原理可以被理解为深度优先遍历(DFS),即从根节点开始,先遍历左子树,再遍历右子树,以此类推,直到找到所有的叶子节点。当使用Connect By进行查询时,每一行...
在Oracle中,树查询主要依赖于`SELECT...START WITH...CONNECT BY...PRIOR`语法,这个语法让我们能够按照层级结构遍历数据。本文将深入探讨这个语法以及与之相关的函数,并通过实例来说明它们的用法。 首先,我们...
Oracle数据库通过提供`START WITH...CONNECT BY`语句来简化这类查询操作。此功能最早出现在Oracle 8.1.6版本,并一直沿用至今,成为处理递归查询的强大工具之一。 #### 二、Connect By与Start With详解 1. **...
通过指定起始节点(START WITH)和连接条件(CONNECT BY),我们可以构建出一个递归查询,从而获取整个树结构。 例如,假设我们有一个部门表DEPARTMENTS,包含ID(主键)、PARENT_ID(父ID)和NAME(部门名称)字段...
Oracle的`CONNECT BY LEVEL`是数据库查询中用于构建层次结构数据的一种强大工具,尤其是在处理具有层级关系的数据时,如组织架构、产品分类等。本文将深入探讨`CONNECT BY`子句以及`LEVEL`伪列的使用,以帮助你更好...
通过实例比较了 SYS_CONNECT_BY_PATH 和 CONNECT_BY_ROOT 的异同,和返回树形的数据结构