Oracle函数6—递归查询(start with...connect by、sys_connect_by_path、level)
文章目录
- 一、准备数据
- 二、基本使用
- 三、level函数
- 四、获取完整的全树路径
一、准备数据
- 创建表
CREATE TABLE TEST_ORG
(ID VARCHAR2(64) NOT NULL PRIMARY KEY,NAME VARCHAR2(200),PARTEN_ID VARCHAR2(64)
);
comment on column TEST_ORG.ID is '主键';
comment on column TEST_ORG.NAME is '名称';
comment on column TEST_ORG.PARTEN_ID is '父级id';
- 插入数据
INSERT INTO EXECUTE_DB.TEST_ORG (ID, NAME, PARTEN_ID) VALUES('1', '北京市', '0');
INSERT INTO EXECUTE_DB.TEST_ORG (ID, NAME, PARTEN_ID) VALUES('4', '东城区', '1');
INSERT INTO EXECUTE_DB.TEST_ORG (ID, NAME, PARTEN_ID) VALUES('6', '天安门', '4');
INSERT INTO EXECUTE_DB.TEST_ORG (ID, NAME, PARTEN_ID) VALUES('5', '延庆区', '1');
INSERT INTO EXECUTE_DB.TEST_ORG (ID, NAME, PARTEN_ID) VALUES('7', '八达岭', '5');
INSERT INTO EXECUTE_DB.TEST_ORG (ID, NAME, PARTEN_ID) VALUES('2', '天津市', '0');
INSERT INTO EXECUTE_DB.TEST_ORG (ID, NAME, PARTEN_ID) VALUES('3', '上海市', '0');
二、基本使用
1、获取完整的树结构
select * from TEST_ORG start with PARTEN_ID = 0 connect by prior id = PARTEN_ID;
执行结果:
id name parten_id1 北京市 04 东城区 16 天安门 45 延庆区 17 八达岭 52 天津市 03 上海市 0
2、获取指定节点的全部子节点(包含指定节点)
例:获取北京市的全部子级,传入id=1
select * from TEST_ORG start with id = 1 connect by prior id = PARTEN_ID;
执行结果:
id name parten_id
1 北京市 0
4 东城区 1
6 天安门 4
5 延庆区 1
7 八达岭 5
提示:会返回当前数据及全部子级节点。
3、获取指定节点的全部子节点(不包含指定节点)
例:获取北京市的全部子级,传入PARTEN_ID=1
select * from TEST_ORG start with PARTEN_ID = 1 connect by prior id = PARTEN_ID;
执行结果:
id name parten_id
4 东城区 1
6 天安门 4
5 延庆区 1
7 八达岭 5
提示:只会返回当前数据的全部子级节点。
4、获取指定节点的全部父节点(包含指定节点)
例:获取天安门的全部父级
select * from TEST_ORG start with id = 6 connect by prior PARTEN_ID = id;
执行结果:
id name parten_id
6 天安门 4
4 东城区 1
1 北京市 0
提示:会返回当前数据以及全部父级节点。
三、level函数
level字段为oracle特有的层级字段,可以通过level字段查询指定的层级。
例:获取天安门的全部父级上层级2的一层
select t.*,level from TEST_ORG t WHERE level = 2 start with id = 6 connect by prior PARTEN_ID = id;
执行结果:
id name parten_id
4 东城区 1 2
提示:只会返回当前数据以及全部父级节点的层级为2的数据。
四、获取完整的全树路径
例:获取北京市以及全部子级,指定id=1表示北京市。
select t.*,sys_connect_by_path(name, '->') text from TEST_ORG t start with id = 1 connect by prior id = PARTEN_ID;
执行结果:
id name parten_id text
1 北京市 0 ->北京市
4 东城区 1 ->北京市->东城区
6 天安门 4 ->北京市->东城区->天安门
5 延庆区 1 ->北京市->延庆区
7 八达岭 5 ->北京市->延庆区->八达岭
提示:结合substr函数去除指定内容。
例如:去除最开始的->符号
select t.*,substr(sys_connect_by_path(name, '->'), 3) text from TEST_ORG t start with id = 1 connect by prior id = PARTEN_ID;
执行结果:
id name parten_id text
1 北京市 0 北京市
4 东城区 1 北京市->东城区
6 天安门 4 北京市->东城区->天安门
5 延庆区 1 北京市->延庆区
7 八达岭 5 北京市->延庆区->八达岭
相关文章:
Oracle函数6—递归查询(start with...connect by、sys_connect_by_path、level)
文章目录 一、准备数据二、基本使用三、level函数四、获取完整的全树路径 一、准备数据 创建表 CREATE TABLE TEST_ORG (ID VARCHAR2(64) NOT NULL PRIMARY KEY,NAME VARCHAR2(200),PARTEN_ID VARCHAR2(64) ); comment on column TEST_ORG.ID is 主键; comment on column TES…...
人机交互三原则,网络7层和对应的设备、公钥私钥
人机交互三原则 heo Mandel提出了人机交互的三个黄金原则,它们强调了相似的设计目标,分别是: 简单总结为:控负持面–>空腹吃面 1,用户控制 2,减轻负担 3,保持界面一致 置用户于控制之下&a…...
vue2源码学习01配置rollup打包环境
1.下载rollup相关依赖 npm i rollup rollup-plugin-babel babel/core babel/preset-env --save-dev 2.新建rollup.config.js配置打包选项 //rollup可以导出一个对象,作为打包的配置文件 import babel from rollup-plugin-babel export default {input: ./src/ind…...
DP:斐波那契数列模型
创作不易,感谢三连支持 ! 斐波那契数列用于一维探索的单峰函数之中,用于求解最优值的方法。其主要优势为,在第一次迭代的时候求解两个函数值,之后每次迭代只需求解一次 。 一、第N个泰波那契数 . - 力扣(…...
JavaScript高级(十四)----prmise
异步请求的处理方式 回调函数 所谓的回调函数就是函数作为参数的传递,在一个函数内部调用另一个函数,调用的同时可以把内部函数的数据传递出来,他的使用场景就是异步操作,数据需要等待一段时间才能返回的情况下可以使用回调函数…...
28 OpenCV 轮廓周围绘制图形
文章目录 approxPolyDP 轮廓周围绘制矩形boundingRectminAreaRect绘制圆和椭圆示例 approxPolyDP 轮廓周围绘制矩形 approxPolyDP(InputArray curve, OutputArray approxCurve, double epsilon, bool closed)curve:输入点集,二维点向量的集合appro…...
校企合作,助力人才培养——黄冈师范学院-唯众 “实习实训基地”揭牌仪式顺利举行
3月20日上午,黄冈师范学院计算机学院院长何中林、教务处实习科科长雷汝琳以及计算机学院实验室主任肖飞一行三人,莅临唯众进行参观交流。唯众总经理冉柏权、销售总监舒敏以及董事长助理代西凯进行了热情接待。双方就如何更好地结合企业需求与学院教育资源…...
npm audit fix --force
npm audit fix --force是npm的一个命令,用于自动修复包中的安全漏洞。 其中: - npm audit:审查项目中的依赖包,检查是否存在已知的安全漏洞。 - fix:自动安装相关的补丁来修复发现的漏洞。 - --force:强制安装补丁版本,即使出现不兼容也强制更新。 所以npm audit fix --fo…...
递增四元组
解法: 首先都可以想到dp[i]:第i个元素结尾的递增四元组有dp[i]个 然后发现有一组数据:2,3,6,1,5,8。会出现6结尾和5结尾的递增三元组,也就是未来的决策受过去影响,专业的说就是有后效性。需要强化约束条件࿰…...
蓝桥杯每日一题——棋盘
问题描述 小蓝拥有 n xn 大小的棋盘,一开始棋盘上全都是白子。小蓝进行了 m 次操作,每次操作会将棋盘上某个范围内的所有棋子的颜色取反(也就是白色棋子变为黑色,黑色棋子变为白色)请输出所有操作做完后棋盘上每个棋子的颜色。输入格式 输入的…...
QT6实现创建与操作sqlite数据库及读取实例(一)
一.Qt为SQL数据库提供支持的基本模块(Qt SQL) Qt SQL的API分为不同层: 驱动层 SQL API层 用户接口层 1.驱动层 对于Qt 是基于C来实现的框架,该层主要包括QSqlDriver,QSqlDriverCreator,QSqlDriverCreatorBase,QSqlPlug…...
第十四届蓝桥杯JavaB组省赛真题 - 阶乘求和
/ 10^9考虑前九位,% 10^9保留后9位 解题思路: 求获取结果的后九位数字,需要对10^9取余,因为202320232023这个数字的阶乘太大,必须要减少计算量,因为当一个整数乘以10^9后对其取余,那么结果都为0。 所以我…...
Java毕业设计 基于springboot医院挂号系统 医院管理系统
Java毕业设计 基于springboot医院挂号系统 医院管理系统 springboot医院挂号系统 医院管理系统 功能介绍 用户:登录 首页 个人资料 修改密码 门诊管理 用户挂号 医生:登录 首页 个人资料 修改密码 门诊管理: 用户挂号 处方划价 项目划价 项目缴费 项目…...
【MySQL】基本查询(1)
【MySQL】基本查询(1) 目录 【MySQL】基本查询(1)表的增删改查Create单行数据 全列插入多行数据 指定列插入插入否则更新替换 RetrieveSELECT 列全列查询指定列查询查询字段为表达式为查询结果指定别名结果去重 WHERE 条件英语不…...
一文讲清!进销存管理系统如何实现锁库及库存冻结?计算月加权平均成本?
进销存管理系统中的锁库及库存冻结如何实现?进销存管理系统如何计算月加权平均成本?进销存管理系统又该如何统计和预测采购需求?这些进销存管理难题困扰着许多企业管理者。本文将结合数年从业经验,深入探讨这些进销存管理难题&…...
将本地项目上传至码云
1.打开git,然后进入到项目目录 2.进入到项目目录,然后进行git的初始化 成功后本地项目目录内会多出一个“.git”文件: 指令介绍: git init -- 建立本地仓库 3.在码云上创建仓库,名为“MyMoney” 创建过程参考&…...
虚拟化技术
前言 大家好我是jiantaoyab,这是我所总结作为学习的笔记第十八篇,在这里分享给大家,这篇文章讲虚拟技术就是大家平时用到的云服务器是什么。 虚拟机技术变迁 虚拟机(Virtual Machine)技术,其实就是指在现…...
鸿蒙一次开发,多端部署(一)简介
背景 随着终端设备形态日益多样化,分布式技术逐渐打破单一硬件边界,一个应用或服务,可以在不同的硬件设备之间随意调用、互助共享,让用户享受无缝的全场景体验。而作为应用开发者,广泛的设备类型也能为应用带来广大的…...
数据结构——单向链表(C语言版)
在数据结构和算法中,链表是一种常见的数据结构,它由一系列节点组成,每个节点包含数据和指向下一个节点的指针。在C语言中,我们可以使用指针来实现单向链表。下面将详细介绍如何用C语言实现单向链表。 目录 1. 定义节点结构体 2. …...
ideaSSM 工厂效能管理系统bootstrap开发mysql数据库web结构java编程计算机网页源码maven项目
一、源码特点 idea 开发 SSM 工厂效能管理系统是一套完善的信息管理系统,结合SSM框架和bootstrap完成本系统,对理解JSP java编程开发语言有帮助系统采用SSM框架(MVC模式开发),系统具有完整的源代码和数据库ÿ…...
【单片机】架构设计
以上只是理想架构,或者说和RT-Thread一样,实际做项目往这个上面靠即可。...
手把手教你用Python的ObsPy库计算地震P波到时(附完整代码与避坑指南)
零基础实战:用Python的ObsPy库精准计算地震P波到时 地震数据分析中,P波到时的准确计算是定位震源和研究地下结构的基础。对于地球物理专业的学生和工程师来说,掌握这项技能能大幅提升工作效率。本文将带你从零开始,用Python的ObsP…...
Windows环境下利用vcpkg高效部署CGAL的完整指南
1. Windows环境下vcpkg与CGAL的完美邂逅 第一次在Windows上折腾CGAL的时候,我差点被各种依赖关系搞崩溃。直到发现了vcpkg这个神器,整个安装过程变得异常简单。vcpkg是微软开源的C包管理工具,它能自动处理库的下载、编译和依赖关系࿰…...
等保三级 + 密评双达标:SQL Server TDE + 脱敏最佳实践
一、一次审计惊魂:备份硬盘丢失,患者数据险遭泄露去年底,我院一台 SQL Server 2019 备份服务器因机房搬迁,一块存有全量患者数据的硬盘意外遗失。虽未确认是否被恶意获取,但根据《个人信息保护法》第51条:“…...
别再乱删频道了!Conda报‘invalid character(s)’错误的深层原因与一劳永逸的修复指南
Conda版本字符串报错全解析:从根因诊断到永久修复方案 当你在终端输入conda create -n myenv python3.8时,突然跳出的Malformed version string ~: invalid character(s)错误提示,往往让人措手不及。这个看似简单的报错背后,隐藏…...
别再复制粘贴了!手把手教你用TypeScript封装一个企业级axios请求库(附完整源码)
从零构建高可维护的TypeScript请求库:axios企业级封装实战 每次在Vue3项目中新建一个页面,你是否习惯性打开旧项目复制粘贴网络请求代码?当接口字段变更时,是否需要在十几个文件中逐个修改错误处理逻辑?这种重复劳动不…...
快速体验Qwen3-ASR-0.6B:上传音频文件,一键识别文字
快速体验Qwen3-ASR-0.6B:上传音频文件,一键识别文字 1. 简介与快速体验 Qwen3-ASR-0.6B是一款强大的语音识别模型,支持52种语言和方言的识别。它基于Qwen3-Omni模型开发,在保持高效推理的同时,提供了接近商业闭源API…...
Maxwell电机多目标尺寸优化:基于Ansys Maxwell与OptiSlang的内嵌式永...
Maxwell电机多目标尺寸优化 Ansys Maxwell 和OptiSlang 有案例电机,永磁同步电机内嵌式 满足电机多尺寸参数入手,满足多尺寸联动优化,最终达到多参数优化效果 提供源文件,提供操作视频概述 本文档旨在详细阐述一套基于 Ansys Maxw…...
前沿AI教材编写工具,低查重生成专业教材,释放创作无限可能!
教材格式的复杂性一直是所有编写者共同面临的问题。从标题的字体大小到层级的划分,再到参考文献的格式,是遵循GB/T7714还是某家出版机构的标准,这些要求常常让人眼花缭乱。习题的排版又应该是单栏还是双栏,这些细节的调整不仅耗时…...
Linux内核中的热插拔详解
Linux内核中的热插拔详解 引言 热插拔(Hotplug)是Linux内核中的一项重要功能,它允许在系统运行时动态添加或移除硬件设备,无需重启系统。热插拔技术大大提高了系统的灵活性和可用性,广泛应用于服务器、工作站和嵌入式系…...
