Oracle递归查询笔记
目录
一、创建表结构和插入数据
二、查询所有子节点
三、查询所有父节点
四、查询指定节点的根节点
五、查询指定节点的递归路径
六、递归子类
七、递归父类
一、创建表结构和插入数据
CREATE TABLE "REGION" ( "ID" VARCHAR2(36) DEFAULT SYS_GUID() NOT NULL ENABLE, "PARENT_ID" VARCHAR2(36), "NAME" VARCHAR2(255) NOT NULL ENABLE, "LATITUDE" NUMBER(10,6), "LONGITUDE" NUMBER(10,6), PRIMARY KEY ("ID"));COMMENT ON COLUMN REGION.ID IS '主键';
COMMENT ON COLUMN REGION.PARENT_ID IS '父键';
COMMENT ON COLUMN REGION.NAME IS '地区名';
COMMENT ON COLUMN REGION.LATITUDE IS '经度';
COMMENT ON COLUMN REGION.LONGITUDE IS '纬度';INSERT INTO "REGION" ("ID", "PARENT_ID", "NAME", "LATITUDE", "LONGITUDE")
VALUES (SYS_GUID(), NULL, '江苏省', 31.2304, 120.663);INSERT INTO "REGION" ("ID", "PARENT_ID", "NAME", "LATITUDE", "LONGITUDE")
VALUES (SYS_GUID(), (SELECT "ID" FROM "REGION" WHERE "NAME" = '江苏省'), '苏州市', 31.2988, 120.5853);INSERT INTO "REGION" ("ID", "PARENT_ID", "NAME", "LATITUDE", "LONGITUDE")
VALUES (SYS_GUID(), (SELECT "ID" FROM "REGION" WHERE "NAME" = '苏州市'), '张家港市', 31.8754, 120.5553);INSERT INTO "REGION" ("ID", "PARENT_ID", "NAME", "LATITUDE", "LONGITUDE")
VALUES (SYS_GUID(), (SELECT "ID" FROM "REGION" WHERE "NAME" = '苏州市'), '吴中区', 31.2622, 120.6446);INSERT INTO "REGION" ("ID", "PARENT_ID", "NAME", "LATITUDE", "LONGITUDE")
VALUES (SYS_GUID(), (SELECT "ID" FROM "REGION" WHERE "NAME" = '苏州市'), '相城区', 31.3697, 120.646);INSERT INTO "REGION" ("ID", "PARENT_ID", "NAME", "LATITUDE", "LONGITUDE")
VALUES (SYS_GUID(), (SELECT "ID" FROM "REGION" WHERE "NAME" = '苏州市'), '吴江区', 31.1791, 120.6411);INSERT INTO "REGION" ("ID", "PARENT_ID", "NAME", "LATITUDE", "LONGITUDE")
VALUES (SYS_GUID(), (SELECT "ID" FROM "REGION" WHERE "NAME" = '张家港市'), '凤凰镇', 31.8754, 120.5553);INSERT INTO "REGION" ("ID", "PARENT_ID", "NAME", "LATITUDE", "LONGITUDE")
VALUES (SYS_GUID(), (SELECT "ID" FROM "REGION" WHERE "NAME" = '张家港市'), '塘桥镇', 31.8754, 120.5553);INSERT INTO "REGION" ("ID", "PARENT_ID", "NAME", "LATITUDE", "LONGITUDE")
VALUES (SYS_GUID(), (SELECT "ID" FROM "REGION" WHERE "NAME" = '吴中区'), '木渎镇', 31.2622, 120.6446);INSERT INTO "REGION" ("ID", "PARENT_ID", "NAME", "LATITUDE", "LONGITUDE")
VALUES (SYS_GUID(), (SELECT "ID" FROM "REGION" WHERE "NAME" = '相城区'), '黄埭镇', 31.3697, 120.646);INSERT INTO "REGION" ("ID", "PARENT_ID", "NAME", "LATITUDE", "LONGITUDE")
VALUES (SYS_GUID(), (SELECT "ID" FROM "REGION" WHERE "NAME" = '吴江区'), '平望镇', 31.1791, 120.6411);INSERT INTO "REGION" ("ID", "PARENT_ID", "NAME", "LATITUDE", "LONGITUDE")
VALUES (SYS_GUID(), (SELECT "ID" FROM "REGION" WHERE "NAME" = '吴江区'), '黎里镇', 31.1791, 120.6411);INSERT INTO "REGION" ("ID", "PARENT_ID", "NAME", "LATITUDE", "LONGITUDE")
VALUES (SYS_GUID(), (SELECT "ID" FROM "REGION" WHERE "NAME" = '江苏省'), '无锡市', 31.5704, 120.3055);INSERT INTO "REGION" ("ID", "PARENT_ID", "NAME", "LATITUDE", "LONGITUDE")
VALUES (SYS_GUID(), (SELECT "ID" FROM "REGION" WHERE "NAME" = '无锡市'), '锡山区', 31.5887, 120.3573);INSERT INTO "REGION" ("ID", "PARENT_ID", "NAME", "LATITUDE", "LONGITUDE")
VALUES (SYS_GUID(), (SELECT "ID" FROM "REGION" WHERE "NAME" = '无锡市'), '惠山区', 31.6514, 120.3036);INSERT INTO "REGION" ("ID", "PARENT_ID", "NAME", "LATITUDE", "LONGITUDE")
VALUES (SYS_GUID(), (SELECT "ID" FROM "REGION" WHERE "NAME" = '无锡市'), '滨湖区', 31.5502, 120.2598);INSERT INTO "REGION" ("ID", "PARENT_ID", "NAME", "LATITUDE", "LONGITUDE")
VALUES (SYS_GUID(), (SELECT "ID" FROM "REGION" WHERE "NAME" = '无锡市'), '江阴市', 31.9086, 120.2855);INSERT INTO "REGION" ("ID", "PARENT_ID", "NAME", "LATITUDE", "LONGITUDE")
VALUES (SYS_GUID(), (SELECT "ID" FROM "REGION" WHERE "NAME" = '无锡市'), '宜兴市', 31.3623, 119.8233);
二、查询所有子节点
SELECT *
FROM REGION
START WITH NAME = '无锡市'
CONNECT BY PRIOR ID = PARENT_ID
查询结果:

三、查询所有父节点
SELECT *
FROM REGION
START WITH NAME = '塘桥镇'
CONNECT BY PRIOR PARENT_ID = ID
查询结果:

四、查询指定节点的根节点
SELECT r.*,
connect_by_root(r.ID),
connect_by_root(NAME)
FROM REGION r
WHERE r.NAME = '江阴市'
START WITH r.PARENT_ID = '18F2184511D13555E0630100007F8BFA'
CONNECT BY PRIOR r.ID = r.PARENT_ID
注:18F2184511D13555E0630100007F8BFA是江苏省的主键

查询结果:

五、查询指定节点的递归路径
SELECTID,PARENT_ID ,NAME,sys_connect_by_path(NAME, '->') namepath,LEVEL
FROMREGION
START WITHNAME = '苏州市'
CONNECT BYPRIOR ID = PARENT_ID
查询结果:

六、递归子类
WITH t ( ID ,PARENT_ID,NAME )
AS(
SELECT ID ,PARENT_ID,NAME FROM REGION WHERE NAME='苏州市'
UNION ALL
SELECT d.ID ,d.PARENT_ID , d.NAME FROM t , REGION d
WHERE t.ID = d.PARENT_ID
)
SELECT * FROM t
查询结果:

七、递归父类
WITH t ( ID ,PARENT_ID, NAME)
AS(
SELECT ID ,PARENT_ID, NAME FROM REGION WHERE NAME='塘桥镇'
UNION ALL
SELECT d.ID ,d.PARENT_ID,d.NAME FROM t , REGION d
WHERE t.PARENT_ID = d.ID
)
SELECT * FROM t;
查询结果:

相关文章:
Oracle递归查询笔记
目录 一、创建表结构和插入数据 二、查询所有子节点 三、查询所有父节点 四、查询指定节点的根节点 五、查询指定节点的递归路径 六、递归子类 七、递归父类 一、创建表结构和插入数据 CREATE TABLE "REGION" ( "ID" VARCHAR2(36) DEFAULT SYS_GUI…...
FaceFusion源码框架解读
FaceFusion源码框架解读 我的视频讲解:FaceFusion入门教学 FaceFusion官网 FaceFusion是一款开源的AI换脸工具,一款非常好用的换脸工具,操作简单,上手容易。 Facefusion:GitHub - facefusion/facefusion: Next gene…...
React项目知识积累(三)
1.primary-color 公共样式 less文件中的primary-color,会在config.js中的theme中统一写,方便统一更改。 config.js: theme{"primary-color":"#f0f0f0","font-size":"16px", }less: .classname{color:primary-…...
前端实现打印功能
1、引入打印相关的库 在您的Vue项目中,需要先安装一个用于打印的库,如print-js。您可以通过以下命令安装: npm install print-js --save2、在组件中引入并使用,在需要实现打印功能的组件中,先import print-js模块: import print…...
创建型模式之工厂模式
文章目录 概述1.简单工厂概念结构图 2.工厂方法概念结构图 3.抽象工厂概念结构图 小结 概述 工厂模式用来创建不同但是相关类型的对象(继承同一父类或者接口的一组子类),由给定的参数来决定创建哪种类型的对象。 其实,工厂还可以…...
「动态规划」按摩师
力扣原题链接,点击跳转。 一个有名的按摩师会收到源源不断的预约请求,每个预约都可以选择接或不接。在每次预约服务之间要有休息时间,因此她不能接受相邻的预约。给定一个预约请求序列nums,总共有n个预约,替按摩师找到…...
小程序-滚动触底-页面列表数据无限加载
// index/index.vue <template> <!-- 自定义导航栏 --> <CustomNavbar /> <scroll-view scrolltolower"onScrolltolower" scroll-y class"scroll-view"> <!-- 猜你喜欢 --> <Guess ref"guessRef" /> </s…...
监控上网的软件有哪些?含泪推荐的电脑监控软件
监控上网的软件有很多,企业选择的时候应该遵循什么样的原则呢?鄙人愚见,认为以下四项原则是选择监控软件时首要考虑的。 1、功能需求: 监控软件不应该只是起到控制上网的作用,因为一些泄密行为可能是通过USB接口、打印…...
linux系统防火墙开放端口命令
目录 linux相关命令参考文章1.开放端口1.1 开发单个端口1.2 一次性开放多个端口 2.保存设置3.查看所有开放的端口4.查看防火墙状态 linux相关命令参考文章 管理、设置防火墙规则(firewalld): https://download.csdn.net/blog/column/8489557/137911049 i…...
WebGL渲染引擎优化方向——渲染帧率的优化
作者:caven chen 对此内容感兴趣还可以看前文: WebGL渲染引擎优化方向——加载性能优化 前言 WebGL 是一种强大的图形渲染技术,可以在浏览器中快速渲染复杂的 3D 场景。但是,由于 WebGL 的高性能和高质量要求,如果…...
【文献阅读】ESG评级分化和企业绿色创新
ESG评级分化和企业绿色创新 摘要 (1)本研究通过实证探讨了ESG评级差异是否以及如何影响企业绿色创新。以中国上市公司为样本,我们发现ESG评级差异对企业绿色创新有积极的影响 。经过几次稳健性检查后,该结果仍然成立。 ÿ…...
2024-5-6-从0到1手写配置中心Config之实现配置中心客户端
配置加载原理 在Spring中PropertySource类实现了所有属性的实例化。 启动赋值: 定义自定义属性配置源,从config-server获取全局属性;Spring启动时,插入自定义属性配置源;绑定属性会优先使用,给自定义属性…...
【HarmonyOS4学习笔记】《HarmonyOS4+NEXT星河版入门到企业级实战教程》课程学习笔记(十一)
课程地址: 黑马程序员HarmonyOS4NEXT星河版入门到企业级实战教程,一套精通鸿蒙应用开发 (本篇笔记对应课程第 18 节) P18《17.ArkUI-状态管理Observed 和 ObjectLink》 第一件事:嵌套对象的类型上加上 Observed 装饰器…...
Amesim示例篇-案例1:空间中的铝块散热
前言 本文将通过一个案例继续对Thermal库的元件进一步讲解。 案例1:一个300mm*300mm*1000mm(长*宽*高)的铝板初始温度为45℃,竖直在环境为25℃的空间内静置60min。对流换热系数设置为5W/m2K。本文将通过两种建模方法对铝块的温度…...
深度神经网络——什么是自动编码器?
自动编码器 自动编码器(Autoencoders)是无监督学习领域中一种重要的神经网络架构,它们主要用于数据压缩和特征学习。 自动编码器的定义: 自动编码器是一种无监督机器学习算法,它通过反向传播进行训练,目标…...
初见flyway
flyway (一种数据库版本控制工具 document) 两种文件 V 和 R V: V 开头是不可重复执行的文件,每次修改完都该更改名称 R: R 开头是可重复执行的文件,需要保证内部sql都是可以重复执行的 名称格式: V__table_name.sql, R__table_name.sql …...
9.6 Go语言入门(数组、切片和指针)
Go语言入门(数组、切片和指针) 目录五、数组、切片和指针1. 数组1.1 声明和初始化数组1.2 访问和修改数组元素1.3 多维数组 2. 切片2.1 声明和初始化切片2.2 访问和修改切片元素2.3 切片操作2.4 切片的追加和拷贝 3. 指针3.1 声明和初始化指针3.2 指针与…...
Web面试题(一)
一:以前公司的测试流程? (1)问题分析 面试官主要为了考察候选者对软件测试流程的理解和掌握程度。 (2)核心答案讲解 1)需求分析与评审 2ÿ…...
【Crypto】一眼就解密
文章目录 前言一眼就解密解题感悟 前言 Basic写累了,写写别的 一眼就解密 一眼md5试一试 小小flag 拿下! 解题感悟 30秒搞定...
虚拟ECU:彻底改变汽车软件开发与测试
汽车开发领域有着垂直性较强的一系列需求,其中最为瞩目的需求之一就是对安全高效的软件测试方法的需求。传统的汽车开发偏向使用硬件原型与真实ECU进行软件测试,但由于硬件设备往往在开发周期的中后阶段才生产完成,给汽车开发带来了成本与时间…...
AI专著撰写大揭秘:实用工具深度解读,轻松打造学术佳作
撰写学术专著不仅考验研究者的学术能力,同样是对心理承受力的挑战。与可以通过团队合作完成的论文写作不同,专著的创作通常是“独自一人”的过程。从选定主题、搭建框架到具体的内容撰写和修改,每一个环节几乎都需要研究者亲自完成。长期处于…...
hello-uniapp技术债务管理:平衡开发速度与代码质量的终极指南 [特殊字符]
hello-uniapp技术债务管理:平衡开发速度与代码质量的终极指南 🚀 【免费下载链接】hello-uniapp uni-app框架演示示例 项目地址: https://gitcode.com/gh_mirrors/he/hello-uniapp 在快速发展的移动应用开发领域,hello-uniapp作为uni-…...
告别窗口切换烦恼:Mac窗口置顶神器Topit让你的多任务效率飙升300%
告别窗口切换烦恼:Mac窗口置顶神器Topit让你的多任务效率飙升300% 【免费下载链接】Topit Pin any window to the top of your screen / 在Mac上将你的任何窗口强制置顶 项目地址: https://gitcode.com/gh_mirrors/to/Topit 还在为频繁切换窗口打断工作流而烦…...
NormalMap-Online终极指南:在浏览器中免费生成专业法线贴图
NormalMap-Online终极指南:在浏览器中免费生成专业法线贴图 【免费下载链接】NormalMap-Online NormalMap Generator Online 项目地址: https://gitcode.com/gh_mirrors/no/NormalMap-Online 还在为3D模型缺乏表面细节而烦恼吗?NormalMap-Online是…...
科哥镜像实测:CAM++说话人识别系统快速部署与核心功能体验
科哥镜像实测:CAM说话人识别系统快速部署与核心功能体验 1. 引言:当声音成为身份密码 想象一下,你手头有一段重要的电话录音,需要确认通话双方是否是同一个人。或者,你管理着一个庞大的音频资料库,需要自…...
超立方体可视化背后的数学原理:Processing实现详解
超立方体可视化背后的数学原理:Processing实现详解 想象一下,当你第一次看到超立方体的三维投影时,那种既熟悉又陌生的感觉——它像是我们熟知的立方体,却又在某种更高维度上展开。这种四维几何体在三维空间的投影,不仅…...
别再手动算面积了!用ArcGIS 10.6的‘汇总统计’功能,5分钟搞定土地利用数据分析
5分钟掌握ArcGIS 10.6汇总统计:土地利用分析效率提升实战 在城乡规划、生态保护等领域的日常工作中,我们经常需要处理各类空间数据。以某市自然资源局为例,工作人员每月需要统计各行政区不同土地利用类型的面积分布情况。传统做法是将属性表导…...
别再只盯着IOU了!手把手拆解DeepSort级联匹配,看它如何用‘优先级’解决ID跳变
别再只盯着IOU了!手把手拆解DeepSort级联匹配,看它如何用‘优先级’解决ID跳变 当你在监控视频中看到行人ID突然从"007"跳变成"1024"时,是否曾怀疑自己的多目标跟踪系统被黑客入侵?这种被称为ID跳变ÿ…...
C++的std--chrono时间库与steady_clock在性能测量中的正确使用
在C高性能程序开发中,精确测量代码执行时间是优化和调试的关键环节。std::chrono时间库作为现代C的标准工具,提供了高精度、类型安全的计时能力,其中steady_clock因其单调递增的特性成为性能测量的首选。本文将深入解析其正确使用方式&#x…...
PyTorch-2.x-Universal-Dev-v1.0镜像详解:预装库、国内源、GPU验证全攻略
PyTorch-2.x-Universal-Dev-v1.0镜像详解:预装库、国内源、GPU验证全攻略 1. 镜像概述与核心优势 PyTorch-2.x-Universal-Dev-v1.0镜像是一个专为深度学习开发者打造的高效开发环境。它基于官方PyTorch底包构建,经过精心优化和配置,旨在解决…...
