--往上
select t.*, t.rowid
from sec.sec_organize t
where 1 = 1
START WITH ORGANIZE_ID = :orgId
CONNECT BY PRIOR PARENT_ORGANIZE_ID = ORGANIZE_ID;
--往下
select t.*, t.rowid
from sec.sec_organize t
where 1 = 1
START WITH ORGANIZE_ID = :orgId
CONNECT BY PRIOR ORGANIZE_ID = PARENT_ORGANIZE_ID;
ID P_ID
1 -1
2 1
3 2
4 3
示例:
START WITH ID=3
CONNECT BY ID= PRIOR P_ID
流程为:
1.根据START WITH定位到起始记录,即:ID为3(这里不一定是以ID为条件,可以是任何的条件)的记录,取出主体值P_ID=>2
2.根据条件找到下一条记录即:ID为2的记录,取出主体值P_ID=>1
3.根据条件找到下一条记录即:ID为1的记录,取出主体值P_ID=>-1
...
由此可以看出往上走。
ID P_ID
1 -1
2 1
3 2
4 3
示例:
START WITH ID=1
CONNECT BY PRIOR ID= P_ID
流程为:
1.根据START WITH定位到起始记录,即:ID为1(这里不一定是以ID为条件,可以是任何的条件)的记录,取出主体值ID=>1
2.根据条件找到下一条记录即:P_ID为1的记录,取出主体值ID=>2
3.根据条件找到下一条记录即:P_ID为2的记录,取出主体值ID=>3
...
由此可以看出往下走。
分享到:
相关推荐
### Oracle Start With.Connect By Prior 子句实现递归查询 #### 概述 在Oracle数据库中,`Start With.Connect By Prior`子句是执行递归查询的一种强大工具,主要用于处理层次结构数据。这类数据通常存在于组织...
使用 START WITH 和 CONNECT BY 子句可以实现 SQL 的层次查询,并且可以使用 SYS_CONNECT_BY_PATH 函数和 CONNECT_BY_ROOT、CONNECT_BY_ISLEAF、CONNECT_BY_ISCYCLE 等伪列函数来增强层次查询的能力。
3. **过滤条件的影响**:`WHERE`子句是在已经通过`START WITH`和`CONNECT BY PRIOR`确定的记录集中进一步筛选,它不会影响到递归的路径。 #### 五、注意事项 - 在使用`START WITH`和`CONNECT BY PRIOR`时,需要确保...
select 1 from 表格 start with … connect by prior id = pId start with:表示以什么为根节点,不加限制可以写1=1,要以id为123的节点为根节点,就写为start with id =123 connect by:connect by是必须的,...
本文将详细讲解如何利用`START WITH...CONNECT BY PRIOR`子句来构建和查询树形数据库表。 `START WITH...CONNECT BY PRIOR`是Oracle SQL中的一个特性,用于处理具有层级关系的数据。这个子句允许我们遍历和查询具有...
本文将详细介绍如何利用 `Connect By Prior` 来构建和查询层次结构数据,并通过具体的例子来解释其工作原理。 #### 核心知识点详解 ### 1. `Connect By Prior` 的基本语法与含义 `Connect By Prior` 是一个用于...
### Oracle数据库中的START WITH 和 CONNECT BY 用法详解 在Oracle数据库中,处理层次结构数据时,`START WITH` 和 `CONNECT BY` 是非常有用的两个关键字。这些关键字可以帮助我们在查询时构建出树形或者层级结构的...
Oracle 连接查询是指使用 START WITH 和 CONNECT BY 语句来实现递归查询的方法,这种方法可以生成树形结构的数据。在 Oracle 中,START WITH 语句用于指定递归查询的开始记录,而 CONNECT BY 语句用于指定递归查询的...
在Oracle数据库中,递归查询可以通过`START WITH CONNECT BY PRIOR`语句实现。此语句允许用户按照树状结构来检索数据。 ##### 1. `START WITH CONNECT BY PRIOR`用法详解 **基本语法**: ```sql SELECT * FROM ...
总的来说,`CONNECT BY PRIOR`是Oracle SQL中处理树形数据结构的强大工具,它能够帮助我们有效地查询和呈现层级关系,广泛应用于组织架构、产品分类、供应链管理等各种场景。正确理解和使用这个功能,可以极大地提升...
[START WITH condition CONNECT BY PRIOR condition] [ WHERE condition ][ [ START WITH condition ] CONNECT BY condition [ ORDER SIBLINGS BY expression ] ] ``` 其中,`START WITH`子句用于指定查询的起始...
### Oracle中的Connect By Prior递归算法详解 ...通过正确地设置`START WITH`、`CONNECT BY`和`WHERE`子句,可以有效地查询和分析复杂的数据结构。理解其工作原理有助于更好地利用Oracle的功能来满足各种业务需求。
在SQL查询中,`START WITH` 和 `CONNECT BY` 是两个关键的子句,它们用于构建层次结构查询,通常在处理具有上下级关系的数据时非常有用,如员工与经理的关系、组织结构或者产品分类等。这两个子句是Oracle数据库特有...
Oracle数据库通过提供`START WITH...CONNECT BY`语句来简化这类查询操作。此功能最早出现在Oracle 8.1.6版本,并一直沿用至今,成为处理递归查询的强大工具之一。 #### 二、Connect By与Start With详解 1. **...
总的来说,`connect by prior`是Oracle SQL中处理层次数据的利器,尤其在需要展示和分析树状结构数据时,它的灵活性和高效性使得数据操作变得简单直观。理解和掌握这个功能,能够极大地提升在数据库管理、数据分析等...
- 可以使用`WHERE`子句在查询中添加额外的过滤条件,但要注意,`WHERE`子句应在`START WITH`之后,`CONNECT BY`之前,否则可能无法正确处理层级关系。 5. **使用示例** 假设我们有一个部门表`DEPARTMENTS`,包含`...
通常,`CONNECT BY`与`START WITH`一起使用,`START WITH`指定了层级遍历的起始节点。 例如,假设我们有一个员工表(EMPLOYEE),其中包含上级员工ID(MANAGER_ID)字段,我们可以使用以下查询来展示员工的管理层次...
递归树形结构查询主要依赖于`CONNECT BY`和`PRIOR`关键字,它们允许我们构建复杂的层级查询,以展示数据的层次关系。 在Oracle中,树形结构查询的基本语法如下: ```sql SELECT [LEVEL], * FROM table_name START ...
Oracle是甲骨文公司的一款关系型...使用Connect By进行查询时,需要特别注意循环关系的处理,以及正确地使用`START WITH`、`CONNECT BY`子句和相关伪列。掌握这些知识点,对于Oracle数据库开发人员来说是必不可少的。