`
nannan408
  • 浏览: 1784071 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

oracle的递归运算(树运算)start with org_id = '1' connect by prior parent_id = son_id;

 
阅读更多
1.前言
  oracle的递归运算,在我们web页面的目录结构中会经常用到,据说是面试经常出的题目,而网上的一些东西说得都不是很明了,所以自己整理了一下,以下主要通过一个例子来说明,可以直接copy代码运行一下。
2.start with org_id = '条件1'  prior parent_id =  son_id; 的作用
  这个就是为了把树形结构全部查出来,树的目录就放在同一张表中,如
1
|--2
|--3
|--4
   |--5
      |--6
|--7
   |--8
      |--9
         |--10
这样的结构怎么查出来呢,这种特殊的查询,connect by perior就派上用场了 。
3.代码
create table TESTTEMP
(
  parent_ID    VARCHAR2(30),
  son_ID VARCHAR2(30)
);

insert into TESTTEMP values('1','0');
insert into TESTTEMP values('1','2');
insert into TESTTEMP values('1','3');
insert into TESTTEMP values('1','4');
insert into TESTTEMP values('1','7');
insert into TESTTEMP values('4','5');
insert into TESTTEMP values('5','6');
insert into TESTTEMP values('7','8');
insert into TESTTEMP values('8','9');
insert into TESTTEMP values('9','10');
commit;
select * from TESTTEMP 
start with parent_ID='1'
connect  by  parent_ID= prior son_ID 



结果:
1 0
1 2
1 3
1 4
4 5
5 6
1 7
7 8
8 9
9 10
4。总结
  上面的例子,作用是实现遍历所有节点。如果prior 放在 connect  by后面的话,那就是从上查找。
0
1
分享到:
评论

相关推荐

    Oracle_start_with_connect_by_prior_用法

    ### Oracle中的START WITH CONNECT BY PRIOR 用法详解 #### 一、概念介绍 在Oracle数据库中,`START WITH` 和 `CONNECT BY PRIOR` 是两个非常强大的特性,主要用于处理具有层级结构的数据。这两个特性可以帮助我们...

    Oracle start with.connect by prior子句实现递归查询

    ### Oracle Start With.Connect By Prior 子句实现递归查询 #### 概述 在Oracle数据库中,`Start With.Connect By Prior`子句是执行递归查询的一种强大工具,主要用于处理层次结构数据。这类数据通常存在于组织...

    Oracle_start_with_connect_by_prior_用法[文].pdf

    SELECT * FROM DEPT WHERE NAME LIKE '%销售%' START WITH ID=1 CONNECT BY PRIOR ID = PARENT_ID; ``` PRIOR 关键字的作用是指不进行递归查询,仅查询出满足 ID=1 的记录。 Oracle 中 START WITH... CONNECT BY 的...

    ORACLE查询树型关系(connect_by_prior_start_with)

    ORACLE 查询树型关系(connect_by_prior_start_with) Oracle 查询树型关系是指使用 START WITH 和 CONNECT BY 子句来实现 SQL 的层次查询。从 Oracle 9i 开始,可以通过 SYS_CONNECT_BY_PATH 函数实现将父节点到...

    connect_by_prior_递归算法

    ### Oracle中的Connect By Prior递归算法详解 #### 一、Connect By Prior 子句概述 在Oracle数据库中,`Connect By Prior`子句是一种非常有用的工具,尤其在处理具有层次结构的数据时。它允许用户以一种简洁的方式...

    Oracle递归树形结构查询功能

    `sys_connect_by_path`函数与`CONNECT BY`配合使用,可以追踪节点在整个树中的路径。例如,它可以将每个节点的路径作为字符串返回,便于理解和分析树结构。 在实际应用中,例如组织结构的展示,我们可以创建一个...

    树状数据库表:Oracle中start with...connect by prior子句用法

    总结来说,`START WITH...CONNECT BY PRIOR`子句是Oracle SQL处理树形数据的关键工具,通过它可以有效地查询和展示层次关系的数据。理解并熟练运用这个子句,能够帮助你在处理具有层级结构的业务场景时更加游刃有余...

    Oracle递归查询start with connect by prior的用法

    在Oracle中,`START WITH` 和 `CONNECT BY` 是进行递归查询的关键字,它们允许我们从一个特定的根节点出发,沿着预定义的关系链接遍历整个树形结构。本文将深入探讨这两个关键字的用法,并通过实例来说明其在实际...

    Oracle递归查询

    在Oracle数据库中,递归查询主要依赖于`START WITH`和`CONNECT BY PRIOR`两个关键语法。本文将详细介绍这些概念以及具体的使用方法。 #### 二、创建示例表 为了更好地理解Oracle中的递归查询,我们首先需要创建...

    Oracle的Connect By使用示例

    SELECT LTRIM(SYS_CONNECT_BY_PATH(ID, '-'), '-') AS PATH, ID, NAME, LEVEL FROM TBL_TEST START WITH id = 1 CONNECT BY PRIOR id = pid; ``` - **解释**:利用`SYS_CONNECT_BY_PATH`函数构建出每条记录的...

    oracle-tree-sql.rar_oracle

    理解并熟练掌握`CONNECT BY`、`PRIOR`、`sys_connect_by_path`等关键字和函数,可以帮助我们更高效地处理树形结构的数据。在实际应用中,还需要考虑性能优化,如合理设计表结构和使用索引,以确保查询的效率。

    递归查询菜单树,支持mysql,oracle

    `START WITH`定义了开始节点(顶级菜单),`CONNECT BY`指定了递归连接条件(当前行的父菜单ID等于上一行的ID),而`level`表示菜单的深度。 在实际应用中,通常还需要创建相应的表结构来存储这些菜单数据。例如,`...

    MySQL多种递归查询方法.docx

    在Oracle数据库中,递归查询可以通过`START WITH CONNECT BY PRIOR`语句实现。此语句允许用户按照树状结构来检索数据。 ##### 1. `START WITH CONNECT BY PRIOR`用法详解 **基本语法**: ```sql SELECT * FROM ...

    在db2和oracle中的对树的递归查询语句

    总之,Oracle的`CONNECT_BY`和DB2的`WITH RECURSIVE`是两个数据库系统处理树形结构数据的重要工具,掌握它们的用法和优化策略,对于提升数据库开发和管理能力有着积极的影响。在实际工作中,我们需要根据具体需求和...

    oracle递归、迭代

    通过合理地定义`START WITH`和`CONNECT BY PRIOR`子句,可以方便地检索出任何复杂的层级结构数据。此外,结合`ORDER SIBLINGS BY`子句,还可以对查询结果进行排序,以满足不同场景的需求。希望本文能帮助读者更好地...

    Oracle递归SQL学习

    通过理解`start with`、`connect by prior`和`order siblings by`的用法,我们可以有效地展示和操作层次数据。不过,实际应用时要注意性能优化,避免因递归深度过大而导致的问题,并考虑在模板渲染时的替代方案。

    oracle学习笔记

    1. 查询树形结构:使用`START WITH`和`CONNECT BY`,找出根节点为特定值的所有子节点,例如: ```sql SELECT * FROM inv_node_demo START WITH node_owner_id = 0 CONNECT BY prior node_id = node_owner_id; ``...

    00571 Oracle公司内部数据库培训资料-Les19_分级查询(PPT 16页).ppt

    CONNECT BY PRIOR manager_id = employee_id ``` 这表示当前员工的`manager_id`等于其父节点(上一层)的`employee_id`,以此递归地构建整个树。 遍历的方向有两种:从顶到底和从底到顶。从顶到底的遍历通常从最高...

    Oracle树查询总结

    `CONNECT_BY_ROOT` 函数用于标识根节点,结合 `START WITH parent_id=0` 和 `CONNECT BY` 语句,找到从根节点到指定节点的路径。 9. **列出当前节点是否为叶子** `CONNECT_BY_ISLEAF` 表达式返回一个布尔值,表示...

Global site tag (gtag.js) - Google Analytics