connect by prior...start with...

从根节点向叶子节点遍历:

  select * from emap e connect by prior e.mapid=e.parentid start with e.mapid=3

    

从叶子节点反向搜索根节点:

  select * from emap e connect by prior e.parentid=e.mapid start with e.mapid=1846

  select * from emap e connect by prior e.parentid=e.mapid start with e.mapid in (1846,1847,...)

    -> 适用于不用显示所有树结构的情况下条件查找树,只显示符合条件部分的树。

  

时间: 2024-10-07 04:23:41

connect by prior...start with...的相关文章

start with connect by prior 递归查询用法

start with connect by prior 递归查询用法 这个子句主要是用于B树结构类型的数据递归查询,给出B树结构类型中的任意一个结点,遍历其最终父结点或者子结点. 先看原始数据: 1 create table a_test 2 ( parentid varchar2(10), 3 subid varchar2(10)); 4 5 insert into a_test values ( '1', '2' ); 6 insert into a_test values ( '1', '

oracle中 connect by prior 递归算法

http://blog.163.com/xxciof/blog/static/7978132720095193113752/ oracle中 connect by prior 递归算法 Oracle中start with...connect by prior子句用法 connect by 是结构化查询中用到的,其基本语法是: select ... from tablename start with 条件1 connect by 条件2 where 条件3; 例: select * from ta

【转】oracle CONNECT BY PRIOR叶子节点查找根节点

SELECT TRANS_ID FROM TRANS_INST WHERE connect_by_isleaf=1 START WITH TRANS_ID =480242 CONNECT BY PRIOR UP_TRANS_ID = TRANS_ID; 说明: 表TRANS_INST(TRANS_ID,UP_TRANS_ID) 480242表示树的任何一个节点 TRANS_ID子节点 UP_TRANS_ID父节点

Oracle 树操作(select…start with…connect by…prior)

oracle树查询的最重要的就是select…start with…connect by…prior语法了.依托于该语法,我们可以将一个表形结构的以树的顺序列出来.在下面列述了oracle中树型查询的常用查询方式以及经常使用的与树查询相关的oracle特性函数等,在这里只涉及到一张表中的树查询方式而不涉及多表中的关联等. 1.准备测试表和测试数据 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28

SQL基础-->层次化查询(START BY ... CONNECT BY PRIOR)

--====================================================== --SQL基础-->层次化查询(START BY ... CONNECT BY PRIOR) --====================================================== 层次化查询,即树型结构查询,是SQL中经经常使用到的功能之中的一个,通常由根节点,父节点,子节点,叶节点组成,其语法例如以下: SELECT [LEVEL] ,column,ex

oracle 的 start with connect by prior 学习

语法: SELECT ... FROM    + 表名 START WITH         + 条件1 CONNECT BY PRIOR   + 条件2 WHERE              + 条件3 说明: 这个方法是用来查询树状结构的数据的.举个例子,我们有一个这样的结构 然后建一个这样的表,插入数据. CREATE TABLE TEST( ID NUMBER(2) PRIMARY KEY, PARENT_ID NUMBER(2) ); INSERT INTO TEST (ID, PAR

oracle中 connect by prior 递归查询

Oracle中start with...connect by prior子句用法 connect by 是结构化查询中用到的,其基本语法是: select ... from tablename start with 条件1 connect by 条件2 where 条件3; 例: select * from table start with org_id = 'HBHqfWGWPy' connect by prior org_id = parent_id; 简单说来是将一个树状结构存储在一张表里

START WITH CONNECT BY PRIOR 链表查询

使用场景:排序 设计思路,id为主键,index为顺序,index存前一个节点的id,当然,按照这个思路可以实现双向链表的(preindex存前一个节点,nextindex存下一个节点) 这样的话排序只需交换需要排序的index即可,如: A(id:1 index:0) B(id:2 index:1)C(id:3 index:2)D(id:4 index:3) 四个节点如果想将D排序到B前面,也就是A-D-B-C,这样只需要将D的index更换成B的index1,B节点的更换成D的id即可: 以

Oracle高级函数1------ Oracle 树操作(select…start with…connect by…prior)

oracle树查询的最重要的就是select…start with…connect by…prior语法了.依托于该语法,我们可以将一个表形结构的以树的顺序列出来.在下面列述了oracle中树型查询的常用查询方式以及经常使用的与树查询相关的oracle特性函数等,在这里只涉及到一张表中的树查询方式而不涉及多表中的关联等. 1.准备测试表和测试数据 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28

Oracle 中connect by / prior /start with用法

可以通过connect by / prior / start with 得到指定数据开始的所有上级父目录或者所有下级子目录 下面通过两个简单的例子学习一下两种用法. 方法一: SELECT DISTINCT T.CATALOG_ID, T.PARENT_CATALOG_ID   FROM BI_CATALOG T  START WITH T.CATALOG_ID = 324 CONNECT BY PRIOR T.PARENT_CATALOG_ID = T.CATALOG_ID 方法二: SELE