跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
SQL算法

Oracle 中 CONNECT BY PRIOR 递归查询用法

Oracle 数据库使用 CONNECT BY PRIOR 子句实现层级数据查询。语法包含 START WITH 定义根节点、CONNECT BY 定义父子关系连接条件、WHERE 过滤结果。通过组织 ID 与父 ID 关联存储树形结构,可检索整棵树或特定分支。支持层号标记及 ORDER BY 排序。该机制基于深度优先搜索逻辑遍历节点,适用于组织架构等层级数据展示。

奇形怪状发布于 2025/1/18更新于 2026/6/1424 浏览
Oracle 中 CONNECT BY PRIOR 递归查询用法

Oracle 中 CONNECT BY PRIOR 递归算法

Oracle 中 START WITH ... CONNECT BY PRIOR 子句用法

CONNECT BY 是结构化查询中用到的,其基本语法是:

SELECT ... FROM tablename START WITH 条件 1 CONNECT BY 条件 2 WHERE 条件 3;

例:

SELECT * FROM table START WITH org_id = 'HBHqfWGWPy' CONNECT BY PRIOR org_id = parent_id;

简单说来是将一个树状结构存储在一张表里,比如一个表中存在两个字段:org_id, parent_id,那么通过表示每一条记录的父是谁,就可以形成一个树状结构。用上述语法的查询可以取得这棵树的所有记录。

其中:

  • 条件 1 是根结点的限定语句,当然可以放宽限定条件,以取得多个根结点,实际就是多棵树。
  • 条件 2 是连接条件,其中用 PRIOR 表示上一条记录,比如 CONNECT BY PRIOR org_id = parent_id 就是说上一条记录的 org_id 是本条记录的 parent_id,即本记录的父亲是上一条记录。
  • 条件 3 是过滤条件,用于对返回的所有记录进行过滤。

简单介绍如下:

在扫描树结构表时,需要依此访问树结构的每个节点,一个节点只能访问一次,其访问的步骤如下:

  1. 从根节点开始;
  2. 访问该节点;
  3. 判断该节点有无未被访问的子节点,若有,则转向它最左侧的未被访问的子节,并执行第二步,否则执行第四步;
  4. 若该节点为根节点,则访问完毕,否则执行第五步;
  5. 返回到该节点的父节点,并执行第三步骤。

总之:扫描整个树结构的过程也即是中序遍历树的过程。

树结构的描述

树结构的数据存放在表中,数据之间的层次关系即父子关系,通过表中的列与列间的关系来描述。如 EMP 表中的 EMPNO 和 MGR。EMPNO 表示该雇员的编号,MGR 表示领导该雇员的人的编号,即子节点的 MGR 是父节点的 EMPNO。

在具有树结构的表中,每一行数据都是树结构中的一个节点,由于节点所处的层次位置不同,所以每行记录都可以有一个层号。层号根据节点与根节点的距离确定。不论从哪个节点开始,该起始根节点的层号始终为 1,根节点的子节点为 2,依此类推。

节点和分支的裁剪

在对树结构进行查询时,可以去掉表中的某些行,也可以剪掉树中的一个分支,使用 WHERE 子句来限定树型结构中的单个节点。但这却不影响其后代节点(自顶向下检索时)或前辈节点(自底向上检索时)。

排序显示

象在其它查询中一样,在树结构查询中也可以使用 ORDER BY 子句,改变查询结果的显示顺序,而不必按照遍历树结构的顺序。

目录

  1. Oracle 中 CONNECT BY PRIOR 递归算法
  2. Oracle 中 START WITH ... CONNECT BY PRIOR 子句用法
  3. 树结构的描述
  4. 节点和分支的裁剪
  5. 排序显示
  • 免费图片AI生成工具免费生成了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 免费图片视频在线生成30秒,将你的创意变成现实开始设计
  • X/Twitter免费视频下载器免登陆无限额度免费视频解析下载了解详情
  • 100+免费在线小游戏爽一把
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • 前端面试高频场景题汇总
  • MetaLlama 大模型系列详解:架构、部署与本地运行
  • Transformer 结构及应用详解:GPT、BERT、MT-DNN、GPT-2
  • Python 爬虫实战:抓取小说并保存为本地 TXT 文件
  • 二分答案专题实战:木材加工与砍树问题详解
  • 为什么 AI 难以取代软件工程师?
  • 近端策略优化算法 (PPO) 详解与 PyTorch 实现
  • 时序数据库 Apache IoTDB 基于 Kubernetes 的部署运维指南
  • 多无人机协同吊载高速穿越 0.8 米窄缝技术解析
  • 二叉树基础:概念、存储结构与遍历算法详解
  • 通义万相 2.1:多模态生成模型的技术架构与应用场景解析
  • 算法实战:前缀和与后缀和解决中心下标及数组乘积问题
  • 2025 大模型学习路线与核心资源指南
  • 轻量级推荐引擎:Redis ZUNIONSTORE 实现加权排序
  • 数据结构:快速排序分区逻辑与冒泡排序效率对比
  • Java transient 关键字详解与 Flink State 实践
  • Rust 集合类型与迭代器:高效处理复杂数据结构
  • 基于鸿蒙生态的轻量化记账工具开发:融合 ArkUI 组件与分布式数据管理
  • 自动化机器学习实战指南:从超参数优化到企业级部署
  • Coze 智能体开发实战:从配置到工作流与 API 集成

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • SQL 美化和格式化

    在线格式化和美化您的 SQL 查询(它支持各种 SQL 方言)。 在线工具,SQL 美化和格式化在线工具,online

  • SQL转CSV/JSON/XML

    解析 INSERT 等受限 SQL,导出为 CSV、JSON、XML、YAML、HTML 表格(见页内语法说明)。 在线工具,SQL转CSV/JSON/XML在线工具,online

  • CSV 工具包

    CSV 与 JSON/XML/HTML/TSV/SQL 等互转,单页多 Tab。 在线工具,CSV 工具包在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online