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

news2024/9/21 8:03:31

一、基本语法

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,level
  from tem_organ_0619 t
 start with t.organ_id = 2
connect by prior t.organ_id = t.parent_id
  order by t.organ_id;

在这里插入图片描述

不设置开始节点:

select t.organ_id, t.parent_id, t.organ_abbr,level
  from tem_organ_0619 t
 -- start with t.organ_id = 2
connect by prior t.organ_id = t.parent_id
  order by t.organ_id;

在这里插入图片描述

2.2 向上查找

select t.organ_id, t.parent_id, t.organ_abbr,level
  from tem_organ_0619 t
 start with t.organ_id = 20401
connect by  t.organ_id = prior t.parent_id
  order by t.organ_id;

在这里插入图片描述

2.3 level伪列的使用,格式化层级

select t.organ_id, t.parent_id, lpad(' ',level*4,' ')||t.organ_abbr organ_abbr,level
  from tem_organ_0619 t
 start with t.organ_id = 2
connect by  t.organ_id = prior t.parent_id
  order 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_id
  from tem_organ_0619 t
 start with t.organ_id = 2
connect by  t.organ_id = prior t.parent_id
  order 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_isleaf
  from tem_organ_0619 t
 start with t.organ_id = 2
connect by  t.organ_id = prior t.parent_id
  order 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 t
 start with t.organ_id = 2
connect by  t.organ_id = prior t.parent_id
  order by t.organ_id;

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1840159.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

一文详解去噪扩散概率模型(DDPM)

节前&#xff0c;我们星球组织了一场算法岗技术&面试讨论会&#xff0c;邀请了一些互联网大厂朋友、参加社招和校招面试的同学。 针对算法岗技术趋势、大模型落地项目经验分享、新手如何入门算法岗、该如何准备、面试常考点分享等热门话题进行了深入的讨论。 合集&#x…

AI 克隆声音,只需 3 分钟(附最全教程)

作者&#xff1a;寒斜 继生成式文本大模型 Chatgpt&#xff0c;生成式图片 Stablediffusion 之后生成式语音 Text To Speech 在开源社区也出现了一匹黑马&#xff0c;就是 GPT-Sovits [ 1] 。 之所以说他是黑马&#xff0c;让人觉得惊艳&#xff0c;是因为在语音效果克隆上做…

Deformable-DETR

DETR表现出来的问题 训练周期很长&#xff0c;相比标准的one-stage/two-stage detection在COCO上 12 epochs就能出好的结果&#xff0c;DETR标配200 epochs.对小目标不友好 作者指出&#xff0c;DETR中Transformer的问题是&#xff0c;在初始化的时候&#xff0c;网络几乎是把…

浸没式液冷服务器的换热效率及节能潜力分析

服务器浸没式液冷的换热效率及节能潜力 摘要&#xff1a;我们针对服务器浸没式液冷实验台进行了深入测试&#xff0c;探究了不同室外温度和服务器发热功率对系统制冷PUE的影响。实验数据显示&#xff0c;该系统的制冷PUE值介于1.05至1.28之间&#xff0c;高效节能特点显著。 在…

在哪可以查到全网的司法诉讼信息?

司法涉诉信息指的是再司法活动中形成的各种记录和资料&#xff0c;涵盖了诉讼案件的立案&#xff0c;审判&#xff0c;执行等各个环节的记录和文件。比如基本案件信息&#xff0c;开庭信息&#xff0c;审判信息&#xff0c;执行信息等。有时候还会涉及到被执行人&#xff0c;司…

创建进程的常用方式

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 在Python中有多个模块可以创建进程&#xff0c;比较常用的有os.fork()函数、multiprocessing模块和Pool进程池。由于os.fork()函数只适用于Unix/Linu…

常见的创建型设计模式( 一 )

设计模式( 一 ) 常见的创建型设计模式 1.单例模式 : 确保一个类只有一个实例 , 为整个程序提供一个全局的访问接口。getInstance 实现方式 饿汉式&#xff0c;在调用getInstance 创建实例的时候 &#xff0c;实例已经存在了 &#xff0c;不需要我们再次去 new创建。 优点&a…

Pytorch编写Transformer

本文参考自https://github.com/datawhalechina/learn-nlp-with-transformers/blob/main/docs/ 在学习了图解Transformer以后&#xff0c;需要用Pytorch编写Transformer&#xff0c;下面是写代码的过程中的总结&#xff0c;结构根据图解Transformer进行说明。 import numpy as …

stable diffusion 局部重绘 reference-only api 接口调试

webUI api payload 插件生成的接口参数不准确&#xff0c;reference-only 的image不是对象&#xff0c;就是不同字符串字段&#xff0c;直接传&#xff0c;不是套image。 综上&#xff0c;那个插件参数不确定&#xff0c;应直接看插件的源码&#xff0c;看它接受什么参数 错误…

校园车辆管理系统的设计与实现

第1章 绪论 1.1 研究背景与意义 随着高等教育的普及和扩张&#xff0c;大学校园已成为一个综合性的小型社会。教学楼、实验室、宿舍、体育设施等构成了庞大且复杂的校园基础设施。在这样的环境下&#xff0c;教师、学生、家长及访客的车辆数量也随之增多&#xff0c;这不仅带来…

UI设计师是不是青春饭?你摆烂,啥工作都是青春饭!

一、UI设计师的岗位职责包括&#xff1a; 用户研究和需求分析&#xff1a;了解用户需求、行为和偏好&#xff0c;进行用户调研和用户体验测试&#xff0c;以便设计出符合用户期望的界面。制定设计方案&#xff1a;根据用户需求和产品定位&#xff0c;制定UI设计方案&#xff0c…

[手机Linux PostmarketOS]一,1加6T真正的手机Linux系统

前面用Linux deploy软件安装了Linux系统在手机&#xff0c;实则不是真正的手机刷成了linux系统&#xff0c;而是通过Linux deploy软件在容器里安装了Linux系统&#xff0c;在使用方面会有诸多限制&#xff0c;并不能发挥Linux的真实强大之处&#xff0c;于是我又百度又谷歌(真不…

标准化的力量:如何通过PDM提升企业研发效率

在当今竞争激烈的市场环境中&#xff0c;企业必须不断优化其产品开发流程以保持竞争力。PDM产品数据管理系统与企业标准化的结合&#xff0c;为企业提供了一种有效的方法来管理和优化其研发流程。本文将探讨PDM与企业标准化的概念&#xff0c;它们在企业中的相互作用&#xff0…

上市公司-社会责任报告、ESG报告文本(2006-2023年)

上市公司社会责任报告是企业对外公布的一份关于其社会责任实践和成果的详细文件&#xff0c;涵盖环境保护、社会贡献和公司治理等方面的表现。通常包含公司在减少环境影响、提升社会福祉、维护员工权益、促进社区发展以及确保透明和道德的管理实践等方面的信息和数据。有助于了…

基于Pytorch框架的深度学习Swin-Transformer神经网络食物分类系统源码

第一步&#xff1a;准备数据 5种鸟类数据&#xff1a;self.class_indict ["苹果派", "猪小排", "果仁蜜饼", "生牛肉薄片", "鞑靼牛肉"] &#xff0c;总共有5000张图片&#xff0c;每个文件夹单独放一种数据 第二步&…

PS系统教程23

减淡加深海绵工具 减淡工具 作用&#xff1a;提炼物体颜色 加深工具 作用&#xff1a;变暗物体颜色&#xff0c;加深物体深度 海绵工具 作用&#xff1a;修正物体饱和度&#xff0c;加大纯度 减淡工具 老套路&#xff0c;找一个图片 复制新建粘贴Ctrl键J复制图层选择减…

WinRAR应用文件图标是白色怎么解决

1.打开程序-选项-设置 2.找到集成-选择全部切换&#xff0c;保存即可。

找不到concrt140.dll无法继续执行代码的几种解决方法

在数字时代&#xff0c;电脑用户经常会遇到各种技术问题&#xff0c;其中DLL文件缺失是最常见的问题之一。今天&#xff0c;我们将重点介绍CONCRT140.DLL文件的重要性&#xff0c;以及当它丢失时对电脑的影响。同时&#xff0c;我们提供了五种解决方法和预防措施&#xff0c;帮…

浅谈RC4

一、什么叫RC4&#xff1f;优点和缺点 RC4是对称密码&#xff08;加密解密使用同一个密钥&#xff09;算法中的流密码&#xff08;一个字节一个字节的进行加密&#xff09;加密算法。 优点&#xff1a;简单、灵活、作用范围广&#xff0c;速度快 缺点&#xff1a;安全性能较差&…

24.bytebuf创建

1.byteBuf创建方法 2.自动动态扩容的 package com.xkj.bound;import io.netty.buffer.ByteBuf; import io.netty.buffer.ByteBufAllocator; import lombok.extern.slf4j.Slf4j;@Slf4j public class TestByteBuf {public static void main(String[] args) {//bytebuf可以不指定…