`

start with ...connect by Nocycle Prior 树查询_递归查询

 
阅读更多
select branchid from branch where parentbranchid='BRA0000000000001' order by branchid

--第一句只能查询出父节点是BRA0000000000001的所有子节点

select br.branchid
  from Branch br
 start with br.branchid = 'BRA0000000000001'
connect by Nocycle Prior br.branchid = br.parentbranchid

--这一句能查出父节点是BRA0000000000001的所有子节点,然后它的子节点的--子节点都能查出来

--语法:

[ START WITH condition ] 
CONNECT BY [ NOCYCLE ] condition

 select abbrname,branchid,A.PARENTBRANCHID,branchtype,branchstatus,LEVEL from branch a
where a.branchstatus='BRANCHSTATUS_1'
AND a.branchtype='BRANCHTYPE_30'
start with a.branchid='BRA0000000000002'
connect by nocycle prior a.branchid = a.parentbranchid;

 --正向递归查询(根据id查询自己和自己一下的数据) 

Java代码  收藏代码
  1. select * from table   
  2.     start with id=9842  
  3.     connect by prior id= parentId  
  4. order by id  
--反向递归查询(根据叶子ID查出自己和自己之上的根数据) 
Java代码  收藏代码
  1. select * from table  
  2.     start with id=9842  
  3.     connect by nocycle prior parentId=id  
  4. order by id  
 
分享到:
评论

相关推荐

    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`则定义了节点之间的关系,从而实现对树状结构的遍历。 #### 示例:以KING为根...

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

    - `CONNECT_BY_ROOT`函数用于获取树的根节点值,简化结果处理。 - `LEVEL`伪列提供当前节点在树中的深度,有助于分层显示和限制查询深度。 6. **注意事项** - 递归查询可能导致大量的回溯,因此要确保有适当的...

    浅谈Oracle下connect by原理.pdf

    - `CONNECT_BY_ISCYCLE`:这个伪列用于标识是否为循环行,仅在使用了`NOCYCLE`后才能使用。如果某行是循环中的一环,则此列的值为1,否则为0。 - `CONNECT_BY_ISLEAF`:此伪列用于标识某行是否为叶子节点,即没有子...

    oracle递归查询的例子

    CONNECT BY NOCYCLE PRIOR id = relation MINUS SELECT * FROM DUAL WHERE EXISTS (SELECT * FROM test t1, test t2 WHERE t1.id = PRIOR t2.relation AND t1.relation = t2.id); ``` #### 七、结论 通过上述示例,...

    oracle 使用递归的性能提示测试对比

    在给定的标题“oracle 使用递归的性能提示测试对比”和描述中,主要讨论了使用`START WITH...CONNECT BY NOCYCLE PRIOR`语句进行递归查询时的两种不同实现方式,以及它们对性能的影响。 首先,我们来理解这两种不同...

    学习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; 七、...

    oracle-sql

    Oracle 10g引入了`NOCYCLE`选项来处理这种情况,并提供了`CONNECT_BY_ISCYCLE`伪列,当查询路径中存在循环时,其值为1,否则为0。 5. **TRUNCATE操作**: TRUNCATE是Oracle中用于快速清空表数据的DDL命令。与...

    Oracle SQL实用讲解,最基本最实用的相关讲解

    CONNECT BY [ NOCYCLE ] condition [ START WITH condition ] ``` - `START WITH`定义了层次结构的起始行。 - `CONNECT BY`后面跟的条件决定了层次间的关联,`PRIOR`关键字用来引用上一层的值。 - `LEVEL`是伪...

    SQL实现马踏棋盘

    SELECT m.r, m.c, m.r || m.c Grid, Hs2.r || Hs2.c Jump, Sys_Connect_By_Path(Jump, '/') Path, Connect_By_Root(Jump) Root, Level Lv FROM TT m, TT Hs2 WHERE (ABS(m.r - Hs2.r) = 1 AND ABS(m.c - Hs2.c) =...

    SQL 学习6

    Oracle数据库中的CONNECT BY子句是实现阶层查询的主要方式,它允许我们通过定义连接条件来遍历层级结构。 首先,理解CONNECT BY的基本语法结构至关重要。一个基本的阶层查询可能包含以下部分: 1. **SELECT**:...

    Oracle里取随机数的几种具体的方法

    CREATE SEQUENCE tmp_id INCREMENT BY 1 START WITH 1 MAXVALUE 9999999 NOCYCLE NOCACHE; -- 创建临时表 tmp_1 CREATE TABLE tmp_1 AS SELECT tmp_id.NEXTVAL AS id, email, mobileno FROM 表名 WHERE 条件; -- ...

    Oracle 使用触发器创建自动序列号

    start with 1--从1开始计数,nocycle是一直累加,不循环 cache 20 order; --查序列,小心执行 select seq_customer_id.nextval from SEQ_TEST --插入数据 insert into test(nid,test1) values(seq_test.nextVal,'...

    Oracle_基本建表语句.doc

    CREATE SEQUENCE class_seq INCREMENT BY 1 START WITH 1 MAXVALUE 999999 NOCYCLE NOCACHE; ``` 插入、更新数据以及创建唯一索引的语句如下: ```sql INSERT INTO classes VALUES (class_seq.NEXTVAL, '软件一班'...

    oracle基本操作

    1. **创建序列**:`CREATE SEQUENCE SQ_NAME INCREMENT BY 10 START WITH 20 MAXVALUE 1000 MINVALUE 20 NOCACHE NOCYCLE;`定义一个序列,每次递增10,起始值20,最大值1000,最小值20,不缓存,且不循环。 2. **...

    SQL最佳实践

    CONNECT_BY是Oracle提供的一个强大工具,用于执行层次查询。通过定义父节点和子节点之间的关系,可以轻松地构建出树形结构的数据。 - **Oracle用法**:使用`CONNECT BY PRIOR`子句来指定层次关系。 - **CONNECT_BY...

    Oracle创建自增字段方法-ORACLE SEQUENCE的简单介绍

    START WITH start_value NOMAXVALUE | MAXVALUE max_value NOCYCLE | CYCLE CACHE cache_size | NOCACHE; ``` 其中,sequence_name 是 SEQUENCE 的名称,increment 是每次增加的值,start_value 是起始值,max_value...

    Oracle里抽取随机数的多种方法

    create sequence tmp_id increment by 1 start with 1 maxvalue 9999999 nocycle nocache; 然后,我们创建一个临时表 tmp_1,把符合本次活动条件的记录全部取出来: create table tmp_1 as select tmp_id.nextval ...

Global site tag (gtag.js) - Google Analytics