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 多表连接操作方法(INNER JOIN、LEFT JOIN、RIGHT JOIN、FULL OUTER JOIN)

《MySQL多表连接操作方法(INNERJOIN、LEFTJOIN、RIGHTJOIN、FULLOUTERJOIN)》多表连接是一种将两个或多个表中的数据组合在一起的SQL操作,通过连接,... 目录一、 什么是多表连接?二、 mysql 支持的连接类型三、 多表连接的语法四、实战示例 数据准备五、连接的性

MySQL中的分组和多表连接详解

《MySQL中的分组和多表连接详解》:本文主要介绍MySQL中的分组和多表连接的相关操作,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧... 目录mysql中的分组和多表连接一、MySQL的分组(group javascriptby )二、多表连接(表连接会产生大量的数据垃圾)MySQL中的

MyBatis模糊查询报错:ParserException: not supported.pos 问题解决

《MyBatis模糊查询报错:ParserException:notsupported.pos问题解决》本文主要介绍了MyBatis模糊查询报错:ParserException:notsuppo... 目录问题描述问题根源错误SQL解析逻辑深层原因分析三种解决方案方案一:使用CONCAT函数(推荐)方案二:

MySQL 中的 JSON 查询案例详解

《MySQL中的JSON查询案例详解》:本文主要介绍MySQL的JSON查询的相关知识,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录mysql 的 jsON 路径格式基本结构路径组件详解特殊语法元素实际示例简单路径复杂路径简写操作符注意MySQL 的 J

Go语言开发实现查询IP信息的MCP服务器

《Go语言开发实现查询IP信息的MCP服务器》随着MCP的快速普及和广泛应用,MCP服务器也层出不穷,本文将详细介绍如何在Go语言中使用go-mcp库来开发一个查询IP信息的MCP... 目录前言mcp-ip-geo 服务器目录结构说明查询 IP 信息功能实现工具实现工具管理查询单个 IP 信息工具的实现服

Windows 上如果忘记了 MySQL 密码 重置密码的两种方法

《Windows上如果忘记了MySQL密码重置密码的两种方法》:本文主要介绍Windows上如果忘记了MySQL密码重置密码的两种方法,本文通过两种方法结合实例代码给大家介绍的非常详细,感... 目录方法 1:以跳过权限验证模式启动 mysql 并重置密码方法 2:使用 my.ini 文件的临时配置在 Wi

MySQL重复数据处理的七种高效方法

《MySQL重复数据处理的七种高效方法》你是不是也曾遇到过这样的烦恼:明明系统测试时一切正常,上线后却频频出现重复数据,大批量导数据时,总有那么几条不听话的记录导致整个事务莫名回滚,今天,我就跟大家分... 目录1. 重复数据插入问题分析1.1 问题本质1.2 常见场景图2. 基础解决方案:使用异常捕获3.

SQL中redo log 刷⼊磁盘的常见方法

《SQL中redolog刷⼊磁盘的常见方法》本文主要介绍了SQL中redolog刷⼊磁盘的常见方法,将redolog刷入磁盘的方法确保了数据的持久性和一致性,下面就来具体介绍一下,感兴趣的可以了解... 目录Redo Log 刷入磁盘的方法Redo Log 刷入磁盘的过程代码示例(伪代码)在数据库系统中,r

mysql中的group by高级用法

《mysql中的groupby高级用法》MySQL中的GROUPBY是数据聚合分析的核心功能,主要用于将结果集按指定列分组,并结合聚合函数进行统计计算,下面给大家介绍mysql中的groupby用法... 目录一、基本语法与核心功能二、基础用法示例1. 单列分组统计2. 多列组合分组3. 与WHERE结合使

Mysql用户授权(GRANT)语法及示例解读

《Mysql用户授权(GRANT)语法及示例解读》:本文主要介绍Mysql用户授权(GRANT)语法及示例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录mysql用户授权(GRANT)语法授予用户权限语法GRANT语句中的<权限类型>的使用WITH GRANT