Oracle中递归查询(START WITH……CONNECT BY……)
一、基本语法
在Oracle中START WITH……CONNECT BY……一般用来查找存在父子关系的数据,也就是树形结构的数据。
SELECT * FROM TABLE WHERE 条件3 START WITH 条件1 CONNECT BY 条件2;
-
start with[condition]:设置起点,用来限制第一层的数据,或者叫根节点数据;以这部分数据为基础来查找第二层数据,然后以第二层数据查找第三层数据以此类推。省略后默认以全部行为起点。 -
connect by[condition] :用来指明在查找数据时以怎样的一种关系去查找;比如说查找第二层的数据时用第一层数据某个字段进行匹配,如果这个条件成立那么查找出来的数据就是第二层数据,同理往下递归匹配。 -
prior: 表示上一层级的标识符。经常用来对下一层级的数据进行限制。不可以接伪列。prior在等号前面和后面,查询的数据是不一样的 -
level:伪列(关键字),代表树形结构中的层级编号(数字序列结果集),这个必须配合connect by使用,和rownum是同等效果。 -
connect_by_root:显示根节点列。经常用来分组。 -
connect_by_isleaf:1是叶子节点,0不是叶子节点。在制作树状表格时必用关键字。 -
sys_connect_by_path():将递归过程中的列进行拼接。 -
nocycle、connect_by_iscycle:在有循环结构的查询中使用。 -
siblings: 保留树状结构,对兄弟节点进行排序。
二、数据列表展示
2.1 向下查找
查询以organ_id为2开始的节点的所有直属节点:
select t.organ_id, t.parent_id, t.organ_abbr,levelfrom tem_organ_0619 tstart with t.organ_id = 2
connect by prior t.organ_id = t.parent_idorder by t.organ_id;

不设置开始节点:
select t.organ_id, t.parent_id, t.organ_abbr,levelfrom tem_organ_0619 t-- start with t.organ_id = 2
connect by prior t.organ_id = t.parent_idorder by t.organ_id;

2.2 向上查找
select t.organ_id, t.parent_id, t.organ_abbr,levelfrom tem_organ_0619 tstart with t.organ_id = 20401
connect by t.organ_id = prior t.parent_idorder by t.organ_id;

2.3 level伪列的使用,格式化层级
select t.organ_id, t.parent_id, lpad(' ',level*4,' ')||t.organ_abbr organ_abbr,levelfrom tem_organ_0619 tstart with t.organ_id = 2
connect by t.organ_id = prior t.parent_idorder by t.organ_id;

2.4 connect_by_root查找根节点
select t.organ_id, t.parent_id, lpad(' ',level*4,' ')||t.organ_abbr organ_abbr,level ,connect_by_root t.organ_idfrom tem_organ_0619 tstart with t.organ_id = 2
connect by t.organ_id = prior t.parent_idorder by t.organ_id;

2.5 connect_by_isleaf是否是叶子节点
select t.organ_id, t.parent_id, lpad(' ',level*4,' ')||t.organ_abbr organ_abbr,level ,connect_by_root t.organ_id, connect_by_isleaffrom tem_organ_0619 tstart with t.organ_id = 2
connect by t.organ_id = prior t.parent_idorder by t.organ_id;

2.6 其他
select t.organ_id, t.parent_id, lpad(' ',level*4,' ')||t.organ_abbr organ_abbr,level 层级,sys_connect_by_path(t.organ_id, '<-') 合并层次,PRIOR t.organ_id 父节点, connect_by_root t.organ_id 根节点, decode(connect_by_isleaf, 1, '是', '否') 是否子节点, decode(connect_by_isleaf, 1, t.organ_id, '') 子节点from tem_organ_0619 tstart with t.organ_id = 2
connect by t.organ_id = prior t.parent_idorder by t.organ_id;

相关文章:
Oracle中递归查询(START WITH……CONNECT BY……)
一、基本语法 在Oracle中START WITH……CONNECT BY……一般用来查找存在父子关系的数据,也就是树形结构的数据。 SELECT * FROM TABLE WHERE 条件3 START WITH 条件1 CONNECT BY 条件2;start with [condition]:设置起点,用来限制第一层的数…...
【云原生|K8S系列】如何创建Kubernetes job和Cronjobs 入门指南
本kubernetes教程解释了如何创建kubernetes作业和cronjobs,以及它的基础知识、用例和一些提示和技巧。 什么是Kubernetes Job? Kubernetes job和cronjob是Kubernetes对象,主要用于短期和批处理工作负载。 kubernetes作业对象基本上部署了一个pod&…...
力扣每日一题 6/23 字符串/模拟
博客主页:誓则盟约系列专栏:IT竞赛 专栏关注博主,后期持续更新系列文章如果有错误感谢请大家批评指出,及时修改感谢大家点赞👍收藏⭐评论✍ 520.检测大写字母【简单】 题目: 我们定义,在以下…...
Google trend搜索关键词
Google trend地址:https://trends.google.com/trends/?geoUS&hlzh-CN 1、具体的操作步骤如下: 2、Google trend搜索页面如下:...
Unity C#调用Android,IOS震动功能
最近在Unity上需要很原生移动端进行交互, 原理:新建一个android项目,把生成的app module给干掉,然后留下一个vibrationPlugin module,在这个module下写android震动代码,将这个android工程构建出来的 aar移…...
Ruby 注释
Ruby 注释 在编程中,注释是用于解释代码如何工作以及为什么这样编写的重要工具。Ruby作为一种解释型、面向对象的脚本语言,提供了灵活的注释方式,帮助开发者更好地组织和理解代码。本文将详细介绍Ruby中的注释类型、用法以及最佳实践。 Rub…...
C语言入门系列:特殊的main函数和exit函数
文章目录 一,main函数二,exit函数1,exit函数2,atexit()函数2.1 atexit函数的简介2.2 atexit注册的函数一定会被调用吗2.2.1 正常退出测试2.2.2 异常退出测试 一,main函数 一个C程序至少包含一个函数,这个函…...
JAVA复习3
目录 19. 下列关于 do…while 语句和 while 语句的叙述中错误的是( C ) 20. 若有定义 int a9, b6; System.out.println(a > b) 的结果是( D ) 21. 关于接口和抽象类,下列说法正确的是(A) …...
Oracle共享内存不释放
Oracle数据库使用共享内存来管理其系统全局区(SGA)和程序全局区(PGA)。当Oracle数据库的共享内存没有正确释放时,可能会导致数据库启动失败或性能问题。以下是一些可能的原因和解决方法: /dev/shm空间不足&…...
windows cmd中单引号和双引号的问题
文章目录 前言单引号和双引号的用法单引号双引号 示例对比Linux ShellWindows CMD PowerShell中的引号用法结论 前言 这个问题的起因是在windows cmd中运行一个简单的命令 node -e console.log(process)发现没有输出,但是进入node环境后,直接执行conso…...
Nacos 2.x 系列【15】数据源插件支持达梦、Oracel、PostgreSQL......
文章目录 1. 概述2. 持久层机制2.1 固定语句2.2 数据源插件 3. 案例演示3.1 编译已实现插件3.2 自定义插件3.3 数据库初始化3.4 插件引入3.4.1 方式一:引入到源码3.4.2 方式二:插件加载目录 3.5 修改配置3.6 测试 1. 概述 在实际项目开发中,…...
HJ39判断两个IP是否属于同一子网(中)
提示:文章 文章目录 前言一、背景二、 2.1 2.2 总结 前言 接上文HJ39判断两个IP是否属于同一子网 查了下,atoi可以转换负数。 修改成下面的代码 #include <stdio.h> #include <stdlib.h> #include <stdbool.h>bool isTargetSonN…...
渗透测试基础(二) Linux+Win常用命令介绍
1. Linux常用命令 1.1 解压缩相关 1.1.1 tar命令 解包:tar zxvf FileName.tar 打包:tar czvf FileName.tar DirName1.1.2 gz命令 对于.gz格式的解压1:gunzip FileName.gz解压2:gzip -d FileName.gz压缩:gzip FileN…...
手机usb共享网络电脑没反应的方法
适用于win10电脑,安卓手机上可以 开启usb网络共享选择,如果选择后一直跳,让重复选择usb选项的话,就开启 开发者模式,进到 开发者模式 里设置 默认usb 共享网络 选项 ,就不会一直跳让你选。 1.先用数据线 连…...
Scrivener v3 解锁版安装教程 (写作辅助软件)
前言 Scrivener,一个多功能的写作软件,被世界各地的作家广泛采用,从小说家到剧本家,再到非小说类作家和学术研究者,它的用户群跨越了广泛的领域,包括学生、法律专业人士、记者和翻译。这个软件非常注重用户…...
Python开发——用什么数据储存结构复杂的数据
在Python中,当需要储存包含不同类型的数据时,可以使用以下几种数据结构: 1. 字典(dict) 字典是一种非常灵活的数据结构,允许使用键-值对来存储不同类型的数据。 data {"name": "Alice&quo…...
【0-1系列】从0-1快速了解搜索引擎Scope以及如何快速安装使用(下)
前言 近日,社区版家族正式发布V2024.5版本,其中,社区开发版系列重磅发布Scope开发版以及StellarDB开发版。 为了可以让大家更进一步了解产品,本系列文章从背景概念开始介绍,深入浅出的为读者介绍Scope的优势以及能力…...
前端核心框架Vue指令详解
目录 ▐ 关于Vue指令的介绍 ▐ v-text与v-html ▐ v-on ▐ v-model ▐ v-show与v-if ▐ v-bind ▐ v-for ▐ 前言:在学习Vue框架过程中,大家一定要多参考官方API ! Vue2官方网址https://v2.cn.vuejs.org/v2/guide/ ▐ 关于Vue指令的…...
SD卡无法读取?原因分析与数据恢复策略
一、SD卡无法读取的困境 SD卡作为便携式的存储介质,广泛应用于手机、相机、平板等多种电子设备中。然而,在使用过程中,我们可能会遭遇SD卡无法读取的困扰。当我们将SD卡插入设备时,设备无法识别SD卡,或者虽然识别了SD…...
线程池的工作原理
线程池可以减少创建和销毁线程的次数,从而减少系统资源的消耗。当一个任务(Runnable或Callable对象)(Runnable无返回值,Callable有返回值)被提交到线程池时: 一、首先判断核心线程池中的线程是…...
OpenClaw技能开发入门:为Phi-3-mini-128k-instruct定制自动化插件
OpenClaw技能开发入门:为Phi-3-mini-128k-instruct定制自动化插件 1. 为什么需要自定义OpenClaw技能 去年夏天,我发现自己每天要重复做三件事:查看天气、整理会议纪要、归档下载的文件。这些琐事看似简单,但累积起来每天要消耗我…...
基于双边相关变换与TDOA技术的Matlab角度估计方法:TCT-DOA的原理与实现
基于Matlab的TCT-DOA角度估计 双边相关变换(TCT)是一种信号处理技术,用于测量两个信号之间的相似性 它通过计算两个信号在不同时间滞后下的互相关,可以捕捉信号的时变特性 TDOA是通过测量信号在两个或多个接收器上的到达时间差来确…...
TM1620驱动数码管的8个常见坑点及解决方案(基于STM32实战)
TM1620驱动数码管的8个常见坑点及解决方案(基于STM32实战) 当你在STM32项目中使用TM1620驱动数码管时,可能会遇到各种令人头疼的问题。本文将深入探讨8个最常见的坑点,并提供经过实战验证的解决方案,帮助开发者快速定位…...
STM32温室智能监控系统开发实战
1. 项目概述这个温室培育系统项目是我去年为一个农业科技公司开发的实战案例。整套系统基于STM32F103RCT6主控,整合了12种硬件模块,实现了温室环境的全自动化监控与调控。最让我自豪的是,系统上线后客户反馈作物产量提升了23%,水电…...
效率倍增:用快马AI生成服务器批量管理工具,告别重复劳动
最近在团队里负责服务器运维工作,经常需要同时管理几十台服务器。每次登录、执行重复命令、检查状态都要耗费大量时间,直到发现了用InsCode(快马)平台快速搭建批量管理工具的方法,效率直接翻倍。今天就把这个自动化管理方案分享给大家。 痛点…...
从ResNet到ASPP:手把手教你用PyTorch复现DeepLabv3+的Encoder模块(含代码详解)
从ResNet到ASPP:手把手教你用PyTorch复现DeepLabv3的Encoder模块(含代码详解) 在语义分割领域,DeepLabv3以其出色的性能和清晰的架构设计成为众多研究者和工程师的首选方案。本文将带您深入探索其核心组件——Encoder模块的实现细…...
Intel集成显卡加速PyTorch:从环境搭建到模型训练实战指南
1. 为什么选择Intel集成显卡加速PyTorch? 很多朋友刚接触深度学习时,第一反应都是"得买块N卡"。但你可能不知道,手头的Intel集成显卡也能跑PyTorch,而且效果还不错。我去年给团队配开发机时,就专门测试过Int…...
LabVIEW视觉项目效率翻倍:海康相机+OpenCV/NI Vision混合编程实战
LabVIEW视觉项目效率翻倍:海康相机OpenCV/NI Vision混合编程实战 在工业自动化领域,视觉检测系统的开发效率往往决定了产品上市时间。作为一名长期奋战在产线调试一线的工程师,我发现许多同行在使用LabVIEW进行视觉项目开发时,都会…...
TDOA定位算法在工业4.0中的关键应用解析(2025年更新)
1. TDOA定位算法如何重塑工业4.0生产线 想象一下,在一个现代化的汽车工厂里,几十台焊接机器人正在流水线上精准作业,数百辆AGV小车穿梭运送零件,而它们之间始终保持5厘米的安全距离——这种零碰撞、高效率的协作背后,正…...
实战指南:基于快马平台与yolov11快速开发货架商品检测系统
今天想和大家分享一个最近用yolov11实现的零售商品检测项目,整个过程在InsCode(快马)平台上完成得特别顺利。这个系统可以自动识别超市货架上的商品,特别适合库存管理或者智能结算场景。 项目背景与需求分析 超市货架商品识别看似简单,实际会…...
