`

Oracle start with connect by prior 递归查询树桩结构用法 

 
阅读更多
--测试数据
create table test_lvl1 (id number, parent_id number, name varchar2(10));
insert into test_lvl1 values (1,null,'SLI1');
insert into test_lvl1 values (2,1,'SLI2');
insert into test_lvl1 values (3,1,'SLI3');
insert into test_lvl1 values (4,null,'SLI4');
insert into test_lvl1 values (5,2,'SLI5');
insert into test_lvl1 values (6,3,'SLI6');
insert into test_lvl1 values (7,5,'SLI7');


select * from test_lvl1;


 
/*
   解释一下:
    1. Start with表示从那一层开始的,后面跟表达式,如: pid=0,
    寻找继承关系时,指定的顶点,如果需要对整个表进行整理,比较常用
    的作法是:  PID is null. 例如这种情况顶点的Parent_ID显然是NULL,
    所以从PID is null开始无疑是最完整的。
    
   2. prior 表示返回所以符合这种条件(如id=pid)的connect by操作结果.
*/
 
 
select name, ID, PARENT_ID, LEVEL
          from test_lvl1
         start with parent_id is null
        connect by prior id = PARENT_ID  --连接条件
        order by id
        
        
 -- 使用连接查询
 select a.* ,b.name as parentName
   from test_lvl1 a
   left join (select name, ID, PARENT_ID, LEVEL
                from test_lvl1
               start with parent_id is null
              connect by prior id = PARENT_ID) b 
       on a.parent_id = b.id
   order by a.id      
        
   
-- sql 1992语法连接查询    
   select a.*, b.name as parent_name
  from (select name, ID, PARENT_ID, LEVEL
          from test_lvl1
         start with parent_id is null
        connect by prior id = PARENT_ID) a,
       test_lvl1 b
 where a.parent_id = b.id(+) -- + 表示补充,b表就是匹配表,左表全部显示。
   order by a.id 
        

 

分享到:
评论

相关推荐

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

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

    MySQL多种递归查询方法.docx

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

    Oracle递归树形结构查询功能

    递归树形结构查询主要依赖于`CONNECT BY`和`PRIOR`关键字,它们允许我们构建复杂的层级查询,以展示数据的层次关系。 在Oracle中,树形结构查询的基本语法如下: ```sql SELECT [LEVEL], * FROM table_name START ...

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

    connect by递归查询基本语法是: select 1 from 表格 start with … connect by prior id = pId start with:表示以什么为根节点,不加限制可以写1=1,要以id为123的节点为根节点,就写为start with id =123 ...

    oracle数据库startwith用法

    ### Oracle数据库中的START WITH 和 CONNECT BY 用法详解 在Oracle数据库中,处理层次结构数据时,`START WITH` 和 `CONNECT BY` 是非常有用的两个关键字。这些关键字可以帮助我们在查询时构建出树形或者层级结构的...

    Oracle_start_with_connect_by_prior_用法

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

    ORACLE查询树型关系(connect_by_prior_start_with)

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

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

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

    connect_by_prior_递归算法

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

    Oracle_start_with_connect_by_prior_用法[文].pdf

    Oracle 连接查询是指使用 START WITH 和 CONNECT BY 语句来实现递归查询的方法,这种方法可以生成树形结构的数据。在 Oracle 中,START WITH 语句用于指定递归查询的开始记录,而 CONNECT BY 语句用于指定递归查询的...

    数据库设计之递归树查询

    本文将深入探讨如何通过递归查询来解决这类问题,并着重讲解使用`WITH`语句来实现递归查询的方法,适用于多种数据库系统,如MySQL、PostgreSQL、SQL Server等。 一、理解递归查询 递归查询是一种在数据库中遍历层级...

    Oracle中的树状查询(递归查询)

    Oracle数据库系统在处理层次数据或树形结构时,提供了强大的工具——递归查询。递归查询允许我们在数据表中处理嵌套级别的数据,这在权限查询、组织结构、产品分类等场景中尤其常见。本文将深入探讨Oracle中的树状...

    oracle递归、迭代

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

    oracle中connect-by-prior用法,实战解决日期分解问题.docx

    Oracle数据库中的`CONNECT BY PRIOR`是一个强大的查询构造器,用于处理树形数据结构,尤其在组织层级、部门结构或者员工管理系统中非常常见。这个功能允许我们从一个或多个根节点开始,按照指定的规则遍历整个树结构...

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

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

    Oracle递归查询

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

    connect by的使用探索

    1. 列出上下级关系:使用Connect By语句可以递归地查询树形结构的数据,实现上下级关系的查询。 2. 构造序列:Connect By语句可以用于构造序列,例如生成一系列的日期或数字。 3. 实现排列组合:Connect By语句可以...

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

    Oracle数据库也支持递归查询,但使用的是`CONNECT BY`语句。对于同样的`menus`表,Oracle的查询可能如下: ```sql SELECT id, parent_id, name, level as depth FROM menus START WITH parent_id IS NULL CONNECT ...

    oracle递归查询的例子

    ### Oracle 递归查询详解及实例 #### 一、引言 在数据库查询语言中,Oracle 提供了一种强大的功能——递归查询,这在其他数据库系统如 SQL Server 中是缺失的功能。递归查询允许用户执行多级关联查询,特别适用于...

Global site tag (gtag.js) - Google Analytics