Oracle 递归查询

 1 select a.accountcodeid, a.accountcode, a.accountcodename,
 2        SYS_CONNECT_BY_PATH(a.accountcodename, ‘\‘) as fullname, a.parentcodeid, level
 3   from fm_accountcode a
 4  where a.accountcodeid >= 10000
 5  start with a.parentcodeid is null
 6 connect by prior a.accountcodeid = a.parentcodeid;
 7
 8 select a.accountcodeid, a.accountcode, a.accountcodename,
 9        SYS_CONNECT_BY_PATH(a.accountcodename, ‘\‘) as fullname,
10        a.parentcodeid
11   from fm_accountcode a
12  where a.accountcodeid > 10000
13    and connect_by_isleaf = 1
14  start with a.parentcodeid is null
15 connect by prior a.accountcodeid = a.parentcodeid;

oracle 中递归查询,对树型结构数据相当有用。

二者区别:上,所有数据,包含结构;下,所有末节点,包含结构,具体参见Oracle Document 11g。

时间: 2024-10-22 22:55:10

Oracle 递归查询的相关文章

Oracle递归查询的原理

在Oracle 10g下,来到scott用户下,分别以层次 1,2,3,4上的节点做实验: 当start with是根节点(level=1),要查其子节点,connect by pump和emp都是被扫描4次(总的层次). 当start with是根节点(level=2),要查其子节点,connect by pump和emp被扫描3次. 当start with是根节点(level=3),要查其子节点,connect by pump和emp被扫描2次. 当start with是根节点(level=

oracle递归查询记录

1. start with  开始的id  connect by prior 开始的id=父id 2. level 级别 3.实例 select * from ( select a.*,level tt from biz_district a start with district_id=8 connect by prior district_id=parent_id ) where tt=3 select a.district_id, a.district_name, b.district_i

Oracle递归查询树结构

之前在工作中碰到一个问题,需要找树结构下的所有子节点,如果用程序写会反复查询数据库,对性能有影响,在网上找了下,可以用Oracle的递归查询,例子如下: create table test1 ( cid int, cpid int ) insert into test1 (cid,cpid) values(1,0); insert into test1 (cid,cpid) values(2,1); insert into test1 (cid,cpid) values(3,1); insert

SqlServer CTE 递归查询 Oracle递归查询

在做数据库设计这块,很多时候表的数据模型就是典型的二叉树结构. 于是在查询数据的时候,就涉及到了数据的递归查询. 递归查询分为两种:1.从根节点查询自身以及所有的子节点:2.从子节点查询自身以及所有的父节点. 下面分别以Oracle 11g 数据库和MsSql 2008 数据库为例,来实现上述两种类型的递归查询 先建一张表 表名: TAdministrative  字段名称  说明  AdministrativeID  行政编号  AdministrativePID  当前行政级别的上一行政级别

Oracle递归查询的几种方法

oracle的start with connect by prior是根据条件递归查询"树",分为四种使用情况: 第一种:start with 子节点ID='...' connect by prior 子节点ID = 父节点ID1select * from mdm_organization o start with o.org_code='10000008' connect by prior o.org_code=o.org_parent_code 按照条件org_code='1000

oracle递归查询子节点

通过子节点向根节点追朔. select * from persons.dept start with deptid=76 connect by prior paredeptid=deptid 通过根节点遍历子节点. select * from persons.dept start with paredeptid=0 connect by prior deptid=paredeptid 可通过level 关键字查询所在层次. select a.*,level from persons.dept a

ORACLE递归查询(适用于ID,PARENTID结构数据表)

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 1

Oracle递归查询所有树结构,并确定其中的一条分支

递归查询所有树结构: select * from tableconnect by prior  id= parent_idstart with id=总公司的id 以上SQL语句查询出来的树结构有三条分支! 递归查询出的树结构,有多条分支的情况下,确定其中的某一条分支: SELECT *from(select * from tableconnect by prior id= parent_idstart with id=总公司的id) tconnect by prior id=parent_id

oracle递归查询\sqlserver递归

使用 start with a= '起始ID' connect by prior a= b a为子项,b为父项. select F_CA_CODE,F_CA_PARENTCODE,LEVEL from RGT_UNIT start with F_CA_CODE = '0' connect by prior F_CA_CODE = F_CA_PARENTCODE 查询结果: 其中LEVEL为oracle内置函数 如果加入查询条件需要在start with前面加入: select F_CA_CODE