查询子级分类、父级分类、叶子节点分类(MySQL / Oracle )

目录

查询当前分类及所有子级分类

MySQL

sql 复制代码
WITH RECURSIVE temp AS (
    -- 1.锚点查询(起始节点)
    SELECT
        c1.*
    FROM
        category c1
    WHERE c1.id = 1477358020655718400  -- 要查询的起始节点ID,存在多个时用IN
    
    UNION ALL
    
    -- 2.递归查询(关联子节点)
    SELECT
        c2.*
    FROM
        category c2
    INNER JOIN temp ON c2.parent_id = temp.id  -- 子节点的parent_id = 上一级节点的id
)
-- 3.输出所有子节点(包括起始节点本身,如需排除可加条件)
SELECT * FROM temp

Oracle

sql 复制代码
WITH temp(id) AS (
    -- 1.锚点查询(起始节点)
    SELECT
        c1.id
    FROM
        category c1
    WHERE
        c1.id = 1477358020655718400  -- 要查询的起始节点ID,存在多个时用IN
    
    UNION ALL
    
    -- 2.递归查询(关联子节点)
    SELECT
        c2.id
    FROM
        category c2, temp
    WHERE
        c2.parent_id = temp.id  -- 子节点的parent_id = 上一级节点的id
)
SELECT * FROM temp

查询当前分类及所有父级分类

Oracle

sql 复制代码
SELECT
    c.*
FROM
    category c
START WITH
    c.id = 1477358020655718400  -- 要查询的起始节点ID,存在多个时用IN
CONNECT BY PRIOR c.parent_id = c.id

查询所有叶子节点分类

Oracle

sql 复制代码
SELECT
    c4.*
FROM
    (
        SELECT
            c1.*
        FROM
            category c1
        START WITH
            c1.id = 1477358020655718400  -- 要查询的起始节点ID,存在多个时用IN
        CONNECT BY PRIOR c1.id = c1.parent_id
    ) c4
WHERE
    c4.id IN (
        SELECT
            c3.id
        FROM
            (
                SELECT
                    CONNECT_BY_ISLEAF,
                    c2.*
                FROM
                    category c2
                START WITH
                    c2.parent_id IS NULL
                CONNECT BY c2.parent_id = PRIOR id
            ) c3
        WHERE
            c3.CONNECT_BY_ISLEAF = 1
    )
相关推荐
Elastic 中国社区官方博客5 分钟前
Kibana:使用 AI Chat 及 MCP 轻松创建 AI 原生仪表板
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai·信息可视化
杨云龙UP1 小时前
Oracle Health Check巡检脚本使用SOP V2.0:从HTML原始报告→生成Word专业巡检报告→交付客户_2026-06-03
linux·运维·数据库·sql·oracle·报告·巡检
Database_Cool_1 小时前
Hudi 湖仓一体架构:阿里云 AnalyticDB MySQL 原生集成最佳实践
数据库·mysql·阿里云
我是一颗柠檬1 小时前
【Redis】发布订阅与消息队列Day8(2026年)
数据库·redis·后端·缓存
sukioe1 小时前
Redis 持久化+高可用详解:RDB/AOF/混合/主从/哨兵/集群
数据库·redis·缓存
全栈软件开发1 小时前
祈福导航系统V1.1更新 优化后端控制逻辑和前台UI
数据库·祈福导航系统
_qingche2 小时前
H2 数据库到 MySQL 数据迁移
java·数据库·spring boot·mysql·spring·重构·kotlin
AOwhisky3 小时前
MySQL 学习笔记(第一期):数据库基础与 MySQL 初探
运维·数据库·笔记·学习·mysql·云计算
数据库小学妹3 小时前
MySQL ORDER BY 深度解析:Using temporary 与 Using filesort 的底层机制及索引优化实战
数据库·经验分享·mysql·性能优化·dba
可乐ea3 小时前
【知识获取与分享社区项目 | 项目日记第 21 天】索引构建与联想建议:Outbox 增量更新 + Completion Suggester
java·大数据·mysql·elasticsearch·搜索引擎