Oracle 使用 CONNECT_BY_ROOT 解锁层次结构洞察:在 SQL 中导航数据关系

CONNECT_BY_ROOT 是一个在 Oracle 数据库中使用的特殊函数,它通常用于在层次查询中获取根节点的值。在使用 CONNECT BY 子句进行层次查询时,通过 CONNECT_BY_ROOT 函数,你可以在每一行中获取根节点的值,而不仅仅是当前行的值。

假设有一个需求,给定一个编码,需要查询出来它的子级、孙级 😄
那么我们可以使用oracle中的CONNECT_BY_ROOT函数,来对编码进行层次查询。
sql如下:

SELECT CONNECT_BY_ROOT a.PCODE AS Parent, 
LEVEL, 
a.PCODE,
a.RULESCODEFROM GR_REVIEWRULES aSTART WITH a.PCODE = '2.1.1.1'
CONNECT BY PRIOR a.RULESCODE = a.PCODE;

如下图所示:
在这里插入图片描述

让我进行解释下:

  • SELECT CONNECT_BY_ROOT a.PCODE AS Parent, LEVEL, a.PCODE, a.RULESCODE: 这部分定义了查询的输出列。CONNECT_BY_ROOT a.PCODE 显示了子级和孙级的总级(根节点)编码,LEVEL 表示当前节点在层次结构中的级别,a.PCODE 显示了2.1.1.1所有的子级编码,a.RULESCODE 为2.1.1.1所有孙级编码

  • START WITH a.PCODE = '2.1.1.1': 定义查询的起始节点,从具有编码值为 '2.1.1.1' 的行开始。

  • CONNECT BY PRIOR a.RULESCODE = a.PCODE: 使用 CONNECT BY 子句来定义如何递归地遍历层次结构。在这里,PRIOR a.RULESCODE 表示父(子)节点的规则代码,a.PCODE 表示子(孙)节点的编码。这告诉数据库如何构建层次结构。

当提供编码 '2.1.1.1' 时,这个查询将递归地返回给定编码的子级和孙级的信息。Parent 列将显示子级和孙级的总级(根节点)编码,以反映它们在整个层次结构中的位置。那么我们如果指定一些编码来查询他们的子级、孙级,可以将= '2.1.1.1' 改为 in ( .......) ,具体我们需要结合实际情况
以下是改成 in 以后的的sql:

SELECT CONNECT_BY_ROOT PCODE AS Parent, LEVEL, PCODE, RULESCODEFROM GR_REVIEWRULESSTART WITH PCODE in (SELECT grv.RULESCODE AS RulesCodefrom GR_REVIEWRULES grvwhere grv.canedit = '1')
CONNECT BY PRIOR RULESCODE = PCODE;

以上就是本次对CONNECT_BY_ROOT 的介绍啦~~~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/88913.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

算法竞赛备赛之搜索与图论训练提升,暑期集训营培训

目录 1.DFS和BFS 1.1.DFS深度优先搜索 1.2.BFS广度优先搜索 2.树与图的遍历:拓扑排序 3.最短路 3.1.迪杰斯特拉算法 3.2.贝尔曼算法 3.3.SPFA算法 3.4.多源汇最短路Floy算法 4.最小生成树 4.1.普利姆算法 4.2.克鲁斯卡尔算法 5.二分图:染色法…

浅析kubernetes部署:javashop部署概览

javashop部署概览 节点规划 首先我们对节点进行规划,方便起见,我们进行如下简单的规划: 这里请根据您的实际情况进行合理的资源安排,或和我们售后工程师讨论形成方案。 域名规划 我们以test.com为主域名规划我们的系统域名如下&…

Jpa与Druid线程池及Spring Boot整合(一): spring-boot-starter-data-jpa 搭建持久层

Jpa与Druid线程池及Spring Boot整合(一) Jpa与Druid线程池及Spring Boot整合(二):几个坑 附录官网文档:core.domain-events域事件 (一)Jpa与Druid连接池及Spring Boot整合作为持久层,遇到系列问题,下面一 一记录: pom.xml 文件中加入必须的…

Linux之【进程间通信(IPC)】-总结篇

Linux之【进程间通信(IPC)】-总结篇 管道System V共享内存System V消息队列System V信号量IPC资源的管理方式 往期文章 1.进程间通信之管道 2.进程间通信之System V共享内存 管道 进程之间具有独立性,拥有自己的虚拟地址空间,因…

张驰咨询:提高企业竞争力,六西格玛设计公司(DFSS)在行动

六西格玛设计公司(DFSS)是一种专业从事六西格玛设计的企业,其主要作用是为客户提供高效的六西格玛设计服务,以帮助客户实现高品质、低成本和高效率的产品开发过程。六西格玛设计公司通常拥有一支专业的团队,具有丰富的六西格玛设计经验和技术…

Jupyter并发测试以后出现EOFError marshal data too short

Jupyter 并发测试以后出现EOFError: marshal data too short 背景 由于项目需求需要用户能进行网页在线运行python代码程序,调研后决定使用Jupyter的服务接口实现此功能,目前使用docker进行容器化部署,测试针对次服务进行并发测试。测试并发…

FL Studio for Windows-21.1.0.3713中文直装版功能介绍及系统配置要求

FL Studio 21简称FL水果软件,全称是:Fruity Loops Studio编曲,由于其Logo长的比较像一款水果因此,在大家更多的是喜欢称他为水果萝卜,FL studio21是目前最新的版本,这是一款可以让你的计算机就像是一个全功能的录音室&…

RabbitMQ:可靠消息传递的强大消息中间件

消息中间件在现代分布式系统中起着关键作用,它们提供了一种可靠且高效的方法来进行异步通信和解耦。在这篇博客中,我们将重点介绍 RabbitMQ,一个广泛使用的开源消息中间件。我们将深入探讨 RabbitMQ 的特性、工作原理以及如何在应用程序中使用…

Codeforces Round 891 (Div. 3)ABC

Codeforces Round 891 (Div. 3) 目录 A. Array Coloring题目大意思路代码 B. Maximum Rounding题目大意思路代码 C. Assembly via Minimums题目大意思路代码 A. Array Coloring 题目大意 给你一个包含 n n n个数字的数组,你的任务是判断这个数组是否可以划分成两个…

换架 3D 飞机,继续飞呀飞

相信大多数图扑 HT 用户都曾见过这个飞机的 Demo,在图扑发展的这十年,这个 Demo 是许多学习 HT 用户一定会参考的经典 Demo 之一。 这个 Demo 用简洁的代码生动地展示了 OBJ 模型加载、数据绑定、动画和漫游等功能的实现。许多用户参考这个简单的 Demo 后…

MySQL中用什么数据类型存IP地址

提到IP地址(IPv4),我们脑子里肯定立马浮现类似于192.168.0.1、127.0.0.1这种常见的IP地址,然后结合这个问题“MySQL中用什么数据类型存IP地址?”,于是乎脱口而出用char字符串类型存储。 然后再仔细想想发现,这个IP地址…

腾讯云标准型CVM云服务器详细介绍

腾讯云CVM服务器标准型实例的各项性能参数平衡,标准型云服务器适用于大多数常规业务,例如:web网站及中间件等,常见的标准型云服务器有CVM标准型S5、S6、SA3、SR1、S5se等规格,腾讯云服务器网来详细说下云服务器CVM标准…

页面切换后,滚动栏问题

项目场景: 提示:react项目antd后台管理系统 问题描述 后台管理系统从a页面进入b页面,a页面有数据(有滚动条,且scollTop大于0),进入b页面后,滚动条不是位于初始位置(scol…

Opencv4基于C++基础入门笔记:图像 颜色 事件响应 图形 视频 直方图

效果图◕‿◕✌✌✌:opencv人脸识别效果图(请叫我真爱粉) 先看一下效果图勾起你的兴趣! 文章目录: 一:环境配置搭建 二:图像 1.图像读取与显示 main.cpp 运行结果 2.图像色彩空间转换 2.1 换色彩 test.h …

自动化安装系统—PXE(一)

系统安装过程 加载boot loader加载启动安装菜单加载内核和initrd文件加载根系统运行anaconda的安装向导 安装光盘中与安装相关的文件 安装autofs启动后会自动出现/misc目录。 在虚拟机设置中添加CD/DVD,使用系统ISO文件,登录系统后mount /dev/cdrom …

Kettle系列(二)smart-kettle本地离线部署

Kettle系列(二)smart-kettle本地离线部署 说明一、概述二、代码下载(1)后端代码依赖下载(2)前端代码依赖下载 三、创建数据库(mysql8)四、修改配置文件五、mysql8数据库配置六、其他…

网络:路由

1. 路由器 路由器工作在三层,每个接口都处于不用的网段中,即不同的广播域。但大多情况下,两台路由器直接相连的接口是同一个广播域,即一个网段。 路由器具有判断网络地址和选择路径的功能,能在多网络互联的环境中&…

Mybatis一级缓存与二级缓存

Mybatis一级缓存与二级缓存 缓存就是内存中的数据,常常来自对数据库查询结果的保存,使用缓存可以避免频繁与数据库进行交互,从而提高查询响应速度。 mybaits提供内存支持; 一级缓存 一级缓存,sqlSession级别的缓存…

NZ系列工具NZ02:VBA读取PDF使用说明

【分享成果,随喜正能量】时光绽放并蒂莲,更是一份殷殷嘱托,更是一份诚挚祝福,是一份时光馈赠,又是一份时光陪伴。。 我的教程一共九套及VBA汉英手册一部,分为初级、中级、高级三大部分。是对VBA的系统讲解…

多线程事务怎么回滚?

项目中用到了多线程去批量处理一些数据,当时想当然认为只要方法上加上Transactional注解就好了,实际并未达到想要的处理效果。特此去学习了下关于多线程事务回滚相关方案,参考了网上其他资料,这里整理并记录下学习历程。 站在巨人…