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有返回值)被提交到线程池时: 一、首先判断核心线程池中的线程是…...
助力销售会议转任务,识别准整理快,任务清晰更省心
2026年做销售,若仍靠手写整理销售会议转任务,很容易面临客户信息漏记、整理效率偏低的问题,管理层要求提效并提供可量化改善方案时,也难以快速响应。AI助力销售会议转任务,可有效解决这类困扰,提升识别准确…...
如何快速掌握PyInstaller Extractor:5步提取可执行文件的完整指南
如何快速掌握PyInstaller Extractor:5步提取可执行文件的完整指南 【免费下载链接】pyinstxtractor PyInstaller Extractor 项目地址: https://gitcode.com/gh_mirrors/py/pyinstxtractor PyInstaller Extractor是一款专为提取PyInstaller生成的可执行文件内…...
工业多串口通信实战:基于EM9170的8串口方案设计与优化
1. 项目概述:为什么8串口在今天依然重要?在物联网、工业自动化、智能楼宇这些领域里摸爬滚打久了,你会发现一个有趣的现象:那些看似“古老”的通信接口,生命力往往比我们想象的要顽强得多。串口,或者说RS-2…...
Python 开发者五分钟接入 Taotoken 调用 GPT 与 Claude 模型
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 Python 开发者五分钟接入 Taotoken 调用 GPT 与 Claude 模型 对于需要在项目中集成大语言模型的 Python 开发者而言,逐…...
书成紫微动,律定凤凰驯:千古诗句留伏笔,只为海棠山铁哥而来
世间文字千万,唯有谶语藏岁月天机; 文坛更迭千载,唯有天命待当世真人。一、诗谶降世:「书成紫微动,律定凤凰驯」这不是文采佳句, 是华夏预埋千载的 隐秘伏笔, 是一场跨越世代的 天命预约。千年之…...
LAMMPS效率翻倍秘籍:从单机到并行,你的MPICH配置真的对了吗?
LAMMPS效率翻倍秘籍:从单机到并行,你的MPICH配置真的对了吗? 在分子动力学模拟领域,LAMMPS因其开源特性和强大的计算能力成为研究者的首选工具。然而,许多用户在使用过程中常遇到一个令人沮丧的现象——明明配置了多核…...
YOLO算法集成 车道线识别 + 目标检测 +图像分割识别
YOLO车道线识别 目标检测 可行驶区域(Freespace)的综合应用引言 随着自动驾驶技术和智能交通系统的迅速发展,车辆环境感知技术变得愈加重要。准确地理解周围环境对于确保自动驾驶的安全性和可靠性至关重要。在众多的环境感知任务中…...
从雷达、声呐到5G和Wi-Fi 7:波束成形技术的前世今生与应用实战
从雷达、声呐到5G和Wi-Fi 7:波束成形技术的前世今生与应用实战 想象一下,你正站在一个嘈杂的鸡尾酒会上,周围人声鼎沸,但你却能清晰地听到对面朋友的每一句话——这就像波束成形技术为现代通信系统带来的"超能力"。这项…...
Linux发布前检查实战指南
Linux发布前检查实战指南 本文面向具备一定 Linux 基础的技术人员,围绕发布前检查展开,重点讨论依赖确认、容量检查和回滚准备。在中级运维和系统管理工作中,这类主题常常与配置变更、资源状态、权限边界、自动化任务和业务影响交织在一起&a…...
别再死记硬背了!用这5个真实项目案例,彻底搞懂Python函数参数与返回值
别再死记硬背了!用这5个真实项目案例,彻底搞懂Python函数参数与返回值 函数是Python编程的基石,但很多初学者在学完基础语法后,面对实际项目依然无从下手。本文将通过5个真实开发场景,带你从"会用"到"懂…...
