SQL层次查询语法

基本语法结构

sql 复制代码
SELECT ...
FROM table
START WITH condition  -- 起始条件
CONNECT BY [PRIOR] condition  -- 连接条件
关键概念:PRIOR 的位置决定方向
PRIOR 放在哪一边,哪一边就是父节点。
  1. 由上到下查询(父→子)
    场景:从根节点开始,查询所有子孙节点
sql 复制代码
-- 从指定根节点开始,向下查询所有子节点
SELECT *
FROM ORGAN O
START WITH O.ORG_ID = '根节点ID'  -- 起始点:根节点
CONNECT BY PRIOR O.ORG_ID = O.P_ORG_ID  -- PRIOR在左边,左边是父节点

执行逻辑:

先找到 ORG_ID = '根节点ID' 的记录

然后找 P_ORG_ID = 当前记录的ORG_ID 的记录(子节点)

递归继续找子节点的子节点...

示例:

aql 复制代码
-- 查询总公司下的所有部门
SELECT ORG_ID, ORG_NAME, P_ORG_ID, LEVEL
FROM ORGAN
START WITH ORG_NAME = '总公司'  -- 从总公司开始
CONNECT BY PRIOR ORG_ID = P_ORG_ID  -- 向下找子节点
ORDER BY LEVEL;
  1. 由下到上查询(子→父)
    场景:从某个节点开始,查询所有祖先节点
sql 复制代码
-- 从指定节点开始,向上查询所有父节点
SELECT *
FROM ORGAN O
START WITH O.ORG_ID = '子节点ID'  -- 起始点:子节点
CONNECT BY PRIOR O.P_ORG_ID = O.ORG_ID  -- PRIOR在左边,左边是父节点

执行逻辑:

先找到 ORG_ID = '子节点ID' 的记录

然后找 ORG_ID = 当前记录的P_ORG_ID 的记录(父节点)

递归继续找父节点的父节点...

示例:

sql 复制代码
-- 查询某个部门的所有上级机构
SELECT ORG_ID, ORG_NAME, P_ORG_ID, LEVEL
FROM ORGAN
START WITH ORG_ID = '部门A的ID'  -- 从部门A开始
CONNECT BY PRIOR P_ORG_ID = ORG_ID  -- 向上找父节点
ORDER BY LEVEL DESC;
相关推荐
一隅论数智3 天前
给AI一张“业务概念地图“:本体如何从哲学走向企业智能
大数据·人工智能·经验分享·笔记·学习·学习方法·政务
上海广测检测科技有限公司3 天前
智能平板出口巴西合规详解:Anatel射频、Inmetro电源/电池与LGPD数据合规叠加
经验分享
FLJwu3 天前
存储与固件量产实战01:运动相机TF卡量产翻车实录!V30≠4K可用,90%OEM踩中的隐形售后坑
经验分享·数码相机·相机
深圳老胡3 天前
STM32F407 控制 L6470 步进电机驱动 —— 控制过程简介
笔记·stm32·单片机·嵌入式硬件·代码规范
xiaomu001233 天前
床垫选型的技术评估模型:结构、材料、卫生与检测四层口径
经验分享
Because_of_Her13 天前
并查集-听课笔记
笔记·算法·并查集
漂着的圆木3 天前
Agent 功能参与度:Copilot 怎么算
sql·数据分析·agent·githubcopilot·度量
汉风设计装饰3 天前
智慧办公弱电系统设计:门禁、监控与 IoT 传感器的集成方案
经验分享
彧azz3 天前
Linux 环境下 Redis 学习总结:数据类型、持久化、锁、事务、主从与缓存问题
linux·redis·笔记·学习·面试
m0_719640873 天前
支持开源二次开发的VR遥操机器人2026年选型推荐
经验分享