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 start with paredeptid=0 connect by prior deptid=paredeptid

备注:
start with ...connect by 的用法, start with 后面所跟的就是就是递归的种子。
递归的种子也就是递归开始的地方 connect by 后面的"prior" 如果缺省:则只能查询到符合条件的起始行,并不进行递归查询;
connect by prior 后面所放的字段是有关系的,它指明了查询的方向。

练习: 通过子节点获得顶节点
select FIRST_VALUE(deptid) OVER (ORDER BY LEVEL DESC ROWS UNBOUNDED PRECEDING) AS firstdeptid from persons.dept start with deptid=76 connect by prior paredeptid=deptid
表结构
DEPTID PAREDEPTID NAME
NUMBER NUMBER CHAR (40 Byte)
部门id 父部门id(所属部门id) 部门名称

时间: 2024-09-30 07:03:39

oracle递归查询子节点的相关文章

递归查询子节点

#若存在则删除 DROP FUNCTION IF EXISTS `getBranchChildList`; #创建函数 入参VARCHAR(1000) 返回参数VARCHAR(1000) DELIMITER $$ CREATE #DEFINER=`root`@`localhost` #指定用户 FUNCTION `getBranchChildList`(rootId VARCHAR(1000)) RETURNS VARCHAR(1000) CHARSET utf8 DETERMINISTIC B

Oracle父节点及其子节点数据的查询

Oracle语句如下: 使用方法:start with.....connect by prior.其中start with后面跟的条件1是父节点的查询条件,connect by prior后面跟的条件2是与记录的父节点相同的子节点中的数据. 示例: SELECT id, name as text, parent_id as parentId from TF_SYS_T_ACTION action where 1 = 1 and action.id in (select caction.actio

ORACLE 树形遍历查询根节点、父节点、子节点

1.准备演示数据 创建表结构: -- Create table createtable Z_ORG(  cid         NUMBER,  cname       VARCHAR2(32),  parent_id   NUMBER,  create_time DATE,  org_level   NUMBER) tablespace POWERDESK pctfree10 initrans1 maxtrans255; -- Add comments to the table comment

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=

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递归查询(适用于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

【JS学习笔记】DOM基础-首尾子节点,兄弟节点

一.DOM节点 (1)首尾子节点 有兼容性问题 firstChild.firstElementChild firstChild在高版本的浏览器上具有兼容问题,firstChild在高版本浏览器中指的是文本元素. firstElementChild高级浏览器下可以使用,在IE6-8下反而不兼容. 解决兼容性的办法是使用if进行判断 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://

【JSTREE】动态加载子节点

js中初始化jstree $('#contact-org').jstree({ "data" : { "dataType": 'json', "url":function(node){ return ctxPath + "/v-contact?queryOrg"; }, "data":function(node){ return {"id" : node.id}; } } } } 返回的