ORACLE 数据库的级联查询 一句sql搞定(例:部门多级,类型多级)

本文主要是介绍ORACLE 数据库的级联查询 一句sql搞定(例:部门多级,类型多级),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

oracle中,有时候会遇到批量操作多级部门下的数据或者是多级类别下文档,一句sql搞定想要查询的数据,并对其增删改操作,如下:


查询某条数据下是否有子节点:

select *          //要查询的字段
from table      //具有子接点id和父接点id的表
start with childid=id数据           //给定一个开始查询的id(字段名为子接点id,以及开始的id数据)
connect by prior childid= pid    //联接条件为子接点等于父接点 


查询某条数据上是否有父节点:


select *          //要查询的字段
from table      //具有子接点id和父接点id的表
start with childid=id数据          //给定一个开始查询的id(字段名为子接点id,以及开始的id数据)
connect by prior pid= childid   //联接条件为父接点等于子接点

实际举个例子,更好理解:

多级查询,数据结构如下:

abcde1e2

db数据字段如下:

id		name						unit_id		pid
-------------------------------------------------------
710		部门文档					527	
1262	规章制度					527			710
2331	日常管理					527			710
2349	设备管理					527			710
2350	电梯						527			2349
2351	综合办公楼电梯				527			2350
2352	电梯保养作业报告			527			2351
2353	电梯维修报告				527			2351
12837	港口(建筑)设施维修管理	527			710
12838	港口主要设施				527			12837
12839	港口附属设施				527			12837


在上表中查找id=2351 相关联的所有的父节点以及所有的子节点数据,级联sql如下:


select t.* from OA_DEPT_DOC_TYPE t start with id='2351' connect by prior pid = id
UNION
select t.* from OA_DEPT_DOC_TYPE t start with id='2351' connect by prior id = pid


查询的结果如下:

id		name				unit_id		pid
-----------------------------------------------
710		部门文档			527	
2349	设备管理			527			710
2350	电梯				527			2349
2351	综合办公楼电梯		527			2350
2352	电梯保养作业报告	527			2351
2353	电梯维修报告		527			2351

这篇关于ORACLE 数据库的级联查询 一句sql搞定(例:部门多级,类型多级)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/960643

相关文章

MySQL字符串转数值的方法全解析

《MySQL字符串转数值的方法全解析》在MySQL开发中,字符串与数值的转换是高频操作,本文从隐式转换原理、显式转换方法、典型场景案例、风险防控四个维度系统梳理,助您精准掌握这一核心技能,需要的朋友可... 目录一、隐式转换:自动但需警惕的&ld编程quo;双刃剑”二、显式转换:三大核心方法详解三、典型场景

MySQL中between and的基本用法、范围查询示例详解

《MySQL中betweenand的基本用法、范围查询示例详解》BETWEENAND操作符在MySQL中用于选择在两个值之间的数据,包括边界值,它支持数值和日期类型,示例展示了如何使用BETWEEN... 目录一、between and语法二、使用示例2.1、betwphpeen and数值查询2.2、be

MySQL快速复制一张表的四种核心方法(包括表结构和数据)

《MySQL快速复制一张表的四种核心方法(包括表结构和数据)》本文详细介绍了四种复制MySQL表(结构+数据)的方法,并对每种方法进行了对比分析,适用于不同场景和数据量的复制需求,特别是针对超大表(1... 目录一、mysql 复制表(结构+数据)的 4 种核心方法(面试结构化回答)方法 1:CREATE

JavaWeb项目创建、部署、连接数据库保姆级教程(tomcat)

《JavaWeb项目创建、部署、连接数据库保姆级教程(tomcat)》:本文主要介绍如何在IntelliJIDEA2020.1中创建和部署一个JavaWeb项目,包括创建项目、配置Tomcat服务... 目录简介:一、创建项目二、tomcat部署1、将tomcat解压在一个自己找得到路径2、在idea中添加

SQL Server中行转列方法详细讲解

《SQLServer中行转列方法详细讲解》SQL行转列、列转行可以帮助我们更方便地处理数据,生成需要的报表和结果集,:本文主要介绍SQLServer中行转列方法的相关资料,需要的朋友可以参考下... 目录前言一、为什么需要行转列二、行转列的基本概念三、使用PIVOT运算符进行行转列1.创建示例数据表并插入数

MyBatis中的两种参数传递类型详解(示例代码)

《MyBatis中的两种参数传递类型详解(示例代码)》文章介绍了MyBatis中传递多个参数的两种方式,使用Map和使用@Param注解或封装POJO,Map方式适用于动态、不固定的参数,但可读性和安... 目录✅ android方式一:使用Map<String, Object>✅ 方式二:使用@Param

MyBatis-Plus使用动态表名分表查询的实现

《MyBatis-Plus使用动态表名分表查询的实现》本文主要介绍了MyBatis-Plus使用动态表名分表查询,主要是动态修改表名的几种常见场景,文中通过示例代码介绍的非常详细,对大家的学习或者工作... 目录1. 引入依赖2. myBATis-plus配置3. TenantContext 类:租户上下文

MySQL MHA集群详解(数据库高可用)

《MySQLMHA集群详解(数据库高可用)》MHA(MasterHighAvailability)是开源MySQL高可用管理工具,用于自动故障检测与转移,支持异步或半同步复制的MySQL主从架构,本... 目录mysql 高可用方案:MHA 详解与实战1. MHA 简介2. MHA 的组件组成(1)MHA

C# WebAPI的几种返回类型方式

《C#WebAPI的几种返回类型方式》本文主要介绍了C#WebAPI的几种返回类型方式,包括直接返回指定类型、返回IActionResult实例和返回ActionResult,文中通过示例代码介绍的... 目录创建 Controller 和 Model 类在 Action 中返回 指定类型在 Action

SQL 注入攻击(SQL Injection)原理、利用方式与防御策略深度解析

《SQL注入攻击(SQLInjection)原理、利用方式与防御策略深度解析》本文将从SQL注入的基本原理、攻击方式、常见利用手法,到企业级防御方案进行全面讲解,以帮助开发者和安全人员更系统地理解... 目录一、前言二、SQL 注入攻击的基本概念三、SQL 注入常见类型分析1. 基于错误回显的注入(Erro