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

Oracle 中 CONNECT BY PRIOR 递归查询用法

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

奇形怪状发布于 2025/1/18更新于 2026/8/2244 浏览
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

更多推荐文章

查看全部
  • Pywinauto:Windows 桌面应用 Python 自动化教程
  • C++ STL 容器:基于红黑树模拟实现 map 和 set
  • nano banana 提示词资源网站推荐及使用技巧
  • 循环神经网络(RNN)与序列数据处理实战
  • FAIR plus 机器人全产业链接会:2026 深圳展会前瞻
  • 前端常用加密方案:Base64、MD5、AES 与 RSA 实战
  • 前端国际化实战:i18next 与 react-intl 方案
  • Python 面试核心知识点汇总:装饰器与数据结构
  • 算法实战:利用前缀和解中心下标与数组乘积问题
  • 百度为何不做 Sora:解析其多模态技术路线与 iRAG 策略
  • MySQL 性能优化实战:索引、查询与架构建议
  • Linux 进程概念
  • GitHub 分支保护规则设置:禁止直接 Push 强制 Pull Request
  • Spring Security OAuth2 实战:从授权服务器到微服务网关
  • Spring AI Alibaba 短期记忆与长期记忆实现原理
  • SpringBoot+Vue 智能推荐卫生健康系统平台设计与实现
  • VS Code 安装 OpenCode 插件及本地 AI 代码补全配置
  • 前端 Base64 格式文件上传详解:原理、实现与最佳实践
  • 从零搭建双模式可视化编程平台:Python 与 ROS2 集成实践
  • 漫画脸描述生成实战:构建 Stable Diffusion WebUI 提示词结构

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如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