`

ORACLE树查询:Start with connect by prior

阅读更多

         在SELECT命令中使用CONNECT BYSTART WITH子句可以查询表中的树型结构关系。其命令格式如下:

SELECT。。。

CONNECT BY {PRIOR列名1=列名2|列名1=PRIOR裂名2}

[START WITH]

         其中:CONNECT BY子句说明每行数据将是按层次顺序检索,并规定将表中的数据连入树型结构的关系中。PRIORY运算符必须放置在连接关系的两列中某一个的前面。对于节点间的父子关系,PRIOR运算符在一侧表示父节点,在另一侧表示子节点,从而确定查找树结构是的顺序是自顶向下还是自底向上。在连接关系中,除了可以使用列名外,还允许使用列表达式。START WITH子句为可选项,用来标识哪个节点作为查找树型结构的根节点。若该子句被省略,则表示所有满足查询条件的行作为根节点。

 

         Start with...Connect By子句递归查询一般用于一个表维护树形结构的应用。
         创建示例表:
CREATE TABLE TBL_TEST
(
  ID    NUMBER,
  NAME  VARCHAR2(100 BYTE),
  PID   NUMBER                                  DEFAULT 0
);
 
         插入测试数据:
INSERT INTO TBL_TEST(ID,NAME,PID) VALUES('1','10','0');
INSERT INTO TBL_TEST(ID,NAME,PID) VALUES('2','11','1');
INSERT INTO TBL_TEST(ID,NAME,PID) VALUES('3','20','0');
INSERT INTO TBL_TEST(ID,NAME,PID) VALUES('4','12','1');
INSERT INTO TBL_TEST(ID,NAME,PID) VALUES('5','121','2');
 
         从Root往树末梢递归
select * from TBL_TEST
 start with id=1
 connect by prior id = pid
 order by pid
 
         从末梢往树ROOT递归
select * from TBL_TEST
 start with id=5
 connect by prior pid = id
 order by id

 

**************************************************************************

CREATE TABLE xxuts_test_start
(
  ID    varchar2(100),
  NAME  VARCHAR2(100)
);

 

select id,name,level from xxuts_test_start
start with id='A'
connect by prior name=id
order by id

 

id     name   level
 A    B        1
 A    C        1
 A    D        1
 B    E         2
 B    F         2
 C    H        2
 E    G         3
 
 
 
 
 
 
***************************************************************
         SELECT transaction_id,
                primary_quantity,
                primary_unit_of_measure,
                source_doc_unit_of_measure,
                transaction_type,
                parent_transaction_id
                       
               FROM rcv_transactions
              WHERE invoice_status_code <> 'INVOICED'
                -- added trx date range as per gap228 -- rsk 07/12/07

         START WITH transaction_id = 276195
          CONNECT BY parent_transaction_id = PRIOR transaction_id;
 
**************************************************
           SELECT transaction_id
         --INTO l_rcv_transaction_id
         FROM rcv_transactions
        WHERE transaction_type = 'RECEIVE'
        START WITH transaction_id = 116231
      CONNECT BY transaction_id = PRIOR parent_transaction_id;    
分享到:
评论

相关推荐

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

    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 用法 find_in_set 函数 concat,concat_ws,group_concat 函数 MySQL 自定义函数 手动实现 MySQL 递归查询 Oracle 递归查询 在 Oracle 中是通过 start ...

    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_用法

    oracle中的数查询,介绍的详细,有例子。

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

    NULL 博文链接:https://yunqiang-zhang-hotmail-com.iteye.com/blog/1312354

    oracle菜单树查询

    oracle菜单树查询 使用实例 使用START WITH CONNECT BY PRIOR子句实现递归查询

    Oracle_start_with_connect_by_prior_用法[文].pdf

    Oracle_start_with_connect_by_prior_用法[文].pdf

    connect_by_prior_递归算法

    oracle中 connect by prior 递归算法 Oracle中start with...connect by prior子句用法 connect by 是结构化查询中用到的

    oracle递归、迭代

    Oracle使用递归查询。查询树结构的sql。在Oracle中,递归查询要用到start with ……connect by prior……

    oracle 树查询 语句

    格式: SELECT column FROM table_name START WITH column=value CONNECT BY PRIOR 父主键=子外键 select lpad(‘ ‘,4*(level-1))||name name,job,id,super from emp start with super is null connect by prior id...

    Oracle row_number()over

    Oracle row_number()over start with...connect by prior start with...connect by prior

    在Oracle层次查询中给SIBLINGS排序

    Oracle SELECT语句中的START WITH和CONNECT BY子句自动阻断一个层次。缺少这项特性,就需要一个复杂的自联接来确定行之间的逻辑联系。START WITH子句指定被认为是层次起点,或“根”的一行或几行,然后CONNECT BY ...

    Oracle SQL树形结构查询

    oracle中的select语句可以用START WITH…CONNECT BY PRIOR子句实现递归查询,connect by 是结构化查询中用到的,其基本语法是: 代码如下:select * from tablename start with cond1 connect by cond2 where cond3;...

    Mysql树形递归查询的实现方法

    前言 对于数据库中的树形结构数据,如...oracle实现递归查询的话,就可以使用start with … connect by connect by递归查询基本语法是: select 1 from 表格 start with … connect by prior id = pId start with

    ORACLE进行树型查询时过滤条件的位置对结果的影响

    在使用start with connect by prior进行树型查询时,若是需要对数据进行过滤时,其过滤条件的位置需要慎重考虑。过滤条件的位置会对查询结果造成不同的影响。

    Orcale查询树形结构

    Oracle中的select语句可以用START WITH…CONNECT BY PRIOR子句实现递归查询,connect by 是结构化查询中用到的,其基本语法是:  select * from tablename start with cond1  connect by cond2  where cond3; ...

    学习SQL常用方法

    查询命令:select CONNECT_BY_ISCYCLE, dirindex, fatherindex, RPAD(' ',2*(LEVEL-1)) || dirname from t_tonedirlib start with fatherindex = 666 connect by NOCYCLE fatherindex = prior dirindex; 七、...

Global site tag (gtag.js) - Google Analytics