当前位置: 首页 > news >正文

Oracle中递归查询(START WITH……CONNECT BY……)

一、基本语法

OracleSTART 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() :将递归过程中的列进行拼接。

  • nocycleconnect_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……一般用来查找存在父子关系的数据&#xff0c;也就是树形结构的数据。 SELECT * FROM TABLE WHERE 条件3 START WITH 条件1 CONNECT BY 条件2;start with [condition]&#xff1a;设置起点&#xff0c;用来限制第一层的数…...

【云原生|K8S系列】如何创建Kubernetes job和Cronjobs 入门指南

本kubernetes教程解释了如何创建kubernetes作业和cronjobs&#xff0c;以及它的基础知识、用例和一些提示和技巧。 什么是Kubernetes Job? Kubernetes job和cronjob是Kubernetes对象&#xff0c;主要用于短期和批处理工作负载。 kubernetes作业对象基本上部署了一个pod&…...

力扣每日一题 6/23 字符串/模拟

博客主页&#xff1a;誓则盟约系列专栏&#xff1a;IT竞赛 专栏关注博主&#xff0c;后期持续更新系列文章如果有错误感谢请大家批评指出&#xff0c;及时修改感谢大家点赞&#x1f44d;收藏⭐评论✍ 520.检测大写字母【简单】 题目&#xff1a; 我们定义&#xff0c;在以下…...

Google trend搜索关键词

Google trend地址&#xff1a;https://trends.google.com/trends/?geoUS&hlzh-CN 1、具体的操作步骤如下&#xff1a; 2、Google trend搜索页面如下&#xff1a;...

Unity C#调用Android,IOS震动功能

最近在Unity上需要很原生移动端进行交互&#xff0c; 原理&#xff1a;新建一个android项目&#xff0c;把生成的app module给干掉&#xff0c;然后留下一个vibrationPlugin module&#xff0c;在这个module下写android震动代码&#xff0c;将这个android工程构建出来的 aar移…...

Ruby 注释

Ruby 注释 在编程中&#xff0c;注释是用于解释代码如何工作以及为什么这样编写的重要工具。Ruby作为一种解释型、面向对象的脚本语言&#xff0c;提供了灵活的注释方式&#xff0c;帮助开发者更好地组织和理解代码。本文将详细介绍Ruby中的注释类型、用法以及最佳实践。 Rub…...

C语言入门系列:特殊的main函数和exit函数

文章目录 一&#xff0c;main函数二&#xff0c;exit函数1&#xff0c;exit函数2&#xff0c;atexit()函数2.1 atexit函数的简介2.2 atexit注册的函数一定会被调用吗2.2.1 正常退出测试2.2.2 异常退出测试 一&#xff0c;main函数 一个C程序至少包含一个函数&#xff0c;这个函…...

JAVA复习3

目录 19. 下列关于 do…while 语句和 while 语句的叙述中错误的是&#xff08; C &#xff09; 20. 若有定义 int a9, b6; System.out.println(a > b) 的结果是&#xff08; D &#xff09; 21. 关于接口和抽象类&#xff0c;下列说法正确的是&#xff08;A&#xff09; …...

Oracle共享内存不释放

Oracle数据库使用共享内存来管理其系统全局区&#xff08;SGA&#xff09;和程序全局区&#xff08;PGA&#xff09;。当Oracle数据库的共享内存没有正确释放时&#xff0c;可能会导致数据库启动失败或性能问题。以下是一些可能的原因和解决方法&#xff1a; /dev/shm空间不足&…...

windows cmd中单引号和双引号的问题

文章目录 前言单引号和双引号的用法单引号双引号 示例对比Linux ShellWindows CMD PowerShell中的引号用法结论 前言 这个问题的起因是在windows cmd中运行一个简单的命令 node -e console.log(process)发现没有输出&#xff0c;但是进入node环境后&#xff0c;直接执行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 方式一&#xff1a;引入到源码3.4.2 方式二&#xff1a;插件加载目录 3.5 修改配置3.6 测试 1. 概述 在实际项目开发中&#xff0c;…...

HJ39判断两个IP是否属于同一子网(中)

提示&#xff1a;文章 文章目录 前言一、背景二、 2.1 2.2 总结 前言 接上文HJ39判断两个IP是否属于同一子网 查了下&#xff0c;atoi可以转换负数。 修改成下面的代码 #include <stdio.h> #include <stdlib.h> #include <stdbool.h>bool isTargetSonN…...

渗透测试基础(二) Linux+Win常用命令介绍

1. Linux常用命令 1.1 解压缩相关 1.1.1 tar命令 解包&#xff1a;tar zxvf FileName.tar 打包&#xff1a;tar czvf FileName.tar DirName1.1.2 gz命令 对于.gz格式的解压1&#xff1a;gunzip FileName.gz解压2&#xff1a;gzip -d FileName.gz压缩&#xff1a;gzip FileN…...

手机usb共享网络电脑没反应的方法

适用于win10电脑&#xff0c;安卓手机上可以 开启usb网络共享选择&#xff0c;如果选择后一直跳&#xff0c;让重复选择usb选项的话&#xff0c;就开启 开发者模式&#xff0c;进到 开发者模式 里设置 默认usb 共享网络 选项 &#xff0c;就不会一直跳让你选。 1.先用数据线 连…...

Scrivener v3 解锁版安装教程 (写作辅助软件)

前言 Scrivener&#xff0c;一个多功能的写作软件&#xff0c;被世界各地的作家广泛采用&#xff0c;从小说家到剧本家&#xff0c;再到非小说类作家和学术研究者&#xff0c;它的用户群跨越了广泛的领域&#xff0c;包括学生、法律专业人士、记者和翻译。这个软件非常注重用户…...

Python开发——用什么数据储存结构复杂的数据

在Python中&#xff0c;当需要储存包含不同类型的数据时&#xff0c;可以使用以下几种数据结构&#xff1a; 1. 字典&#xff08;dict&#xff09; 字典是一种非常灵活的数据结构&#xff0c;允许使用键-值对来存储不同类型的数据。 data {"name": "Alice&quo…...

【0-1系列】从0-1快速了解搜索引擎Scope以及如何快速安装使用(下)

前言 近日&#xff0c;社区版家族正式发布V2024.5版本&#xff0c;其中&#xff0c;社区开发版系列重磅发布Scope开发版以及StellarDB开发版。 为了可以让大家更进一步了解产品&#xff0c;本系列文章从背景概念开始介绍&#xff0c;深入浅出的为读者介绍Scope的优势以及能力…...

前端核心框架Vue指令详解

目录 ▐ 关于Vue指令的介绍 ▐ v-text与v-html ▐ v-on ▐ v-model ▐ v-show与v-if ▐ v-bind ▐ v-for ▐ 前言&#xff1a;在学习Vue框架过程中&#xff0c;大家一定要多参考官方API &#xff01; Vue2官方网址https://v2.cn.vuejs.org/v2/guide/ ▐ 关于Vue指令的…...

SD卡无法读取?原因分析与数据恢复策略

一、SD卡无法读取的困境 SD卡作为便携式的存储介质&#xff0c;广泛应用于手机、相机、平板等多种电子设备中。然而&#xff0c;在使用过程中&#xff0c;我们可能会遭遇SD卡无法读取的困扰。当我们将SD卡插入设备时&#xff0c;设备无法识别SD卡&#xff0c;或者虽然识别了SD…...

线程池的工作原理

线程池可以减少创建和销毁线程的次数&#xff0c;从而减少系统资源的消耗。当一个任务&#xff08;Runnable或Callable对象&#xff09;&#xff08;Runnable无返回值&#xff0c;Callable有返回值&#xff09;被提交到线程池时&#xff1a; 一、首先判断核心线程池中的线程是…...

助力销售会议转任务,识别准整理快,任务清晰更省心

2026年做销售&#xff0c;若仍靠手写整理销售会议转任务&#xff0c;很容易面临客户信息漏记、整理效率偏低的问题&#xff0c;管理层要求提效并提供可量化改善方案时&#xff0c;也难以快速响应。AI助力销售会议转任务&#xff0c;可有效解决这类困扰&#xff0c;提升识别准确…...

如何快速掌握PyInstaller Extractor:5步提取可执行文件的完整指南

如何快速掌握PyInstaller Extractor&#xff1a;5步提取可执行文件的完整指南 【免费下载链接】pyinstxtractor PyInstaller Extractor 项目地址: https://gitcode.com/gh_mirrors/py/pyinstxtractor PyInstaller Extractor是一款专为提取PyInstaller生成的可执行文件内…...

工业多串口通信实战:基于EM9170的8串口方案设计与优化

1. 项目概述&#xff1a;为什么8串口在今天依然重要&#xff1f;在物联网、工业自动化、智能楼宇这些领域里摸爬滚打久了&#xff0c;你会发现一个有趣的现象&#xff1a;那些看似“古老”的通信接口&#xff0c;生命力往往比我们想象的要顽强得多。串口&#xff0c;或者说RS-2…...

Python 开发者五分钟接入 Taotoken 调用 GPT 与 Claude 模型

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 Python 开发者五分钟接入 Taotoken 调用 GPT 与 Claude 模型 对于需要在项目中集成大语言模型的 Python 开发者而言&#xff0c;逐…...

书成紫微动,律定凤凰驯:千古诗句留伏笔,只为海棠山铁哥而来

世间文字千万&#xff0c;唯有谶语藏岁月天机&#xff1b; 文坛更迭千载&#xff0c;唯有天命待当世真人。一、诗谶降世&#xff1a;「书成紫微动&#xff0c;律定凤凰驯」这不是文采佳句&#xff0c; 是华夏预埋千载的 隐秘伏笔&#xff0c; 是一场跨越世代的 天命预约。千年之…...

LAMMPS效率翻倍秘籍:从单机到并行,你的MPICH配置真的对了吗?

LAMMPS效率翻倍秘籍&#xff1a;从单机到并行&#xff0c;你的MPICH配置真的对了吗&#xff1f; 在分子动力学模拟领域&#xff0c;LAMMPS因其开源特性和强大的计算能力成为研究者的首选工具。然而&#xff0c;许多用户在使用过程中常遇到一个令人沮丧的现象——明明配置了多核…...

YOLO算法集成 车道线识别 + 目标检测 +图像分割识别

YOLO车道线识别 目标检测 可行驶区域&#xff08;Freespace&#xff09;的综合应用引言 随着自动驾驶技术和智能交通系统的迅速发展&#xff0c;车辆环境感知技术变得愈加重要。准确地理解周围环境对于确保自动驾驶的安全性和可靠性至关重要。在众多的环境感知任务中&#xf…...

从雷达、声呐到5G和Wi-Fi 7:波束成形技术的前世今生与应用实战

从雷达、声呐到5G和Wi-Fi 7&#xff1a;波束成形技术的前世今生与应用实战 想象一下&#xff0c;你正站在一个嘈杂的鸡尾酒会上&#xff0c;周围人声鼎沸&#xff0c;但你却能清晰地听到对面朋友的每一句话——这就像波束成形技术为现代通信系统带来的"超能力"。这项…...

Linux发布前检查实战指南

Linux发布前检查实战指南 本文面向具备一定 Linux 基础的技术人员&#xff0c;围绕发布前检查展开&#xff0c;重点讨论依赖确认、容量检查和回滚准备。在中级运维和系统管理工作中&#xff0c;这类主题常常与配置变更、资源状态、权限边界、自动化任务和业务影响交织在一起&a…...

别再死记硬背了!用这5个真实项目案例,彻底搞懂Python函数参数与返回值

别再死记硬背了&#xff01;用这5个真实项目案例&#xff0c;彻底搞懂Python函数参数与返回值 函数是Python编程的基石&#xff0c;但很多初学者在学完基础语法后&#xff0c;面对实际项目依然无从下手。本文将通过5个真实开发场景&#xff0c;带你从"会用"到"懂…...