Mysql树形结构表-查询所有子集数据

news/2024/12/22 15:29:40/
  • 表结构,这里只是个例子,所有的树形结构表均可用:
CREATE TABLE `zhkt_course_chapter` (`id` bigint NOT NULL COMMENT '唯一id',`course_id` bigint NOT NULL COMMENT '所属课程id',`name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '名称',`parent_id` bigint NOT NULL DEFAULT '0' COMMENT '父级id,根级父级为0,默认0',`status` int DEFAULT '0' COMMENT '状态:0正常,1禁用,默认0',`sort` int DEFAULT NULL COMMENT '排序字段',`deleted` tinyint DEFAULT '0' COMMENT '逻辑删除:0未删除,1删除,默认0',`version` int DEFAULT NULL COMMENT '版本',`create_by` bigint DEFAULT NULL COMMENT '创建者id',`create_time` datetime DEFAULT NULL COMMENT '创建时间',`update_by` bigint DEFAULT NULL COMMENT '更新者',`update_time` datetime DEFAULT NULL COMMENT '更新时间',PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC COMMENT='智慧课堂-课程章节表';
  1. 查询子集sql,包含自己:
    WITH RECURSIVE chapter_tree AS (SELECT id, parent_id, nameFROM zhkt_course_chapterWHERE id = 1833077834931814401 -- 这里替换为具体的ID值UNION ALLSELECT c.id, c.parent_id, c.nameFROM zhkt_course_chapter cJOIN chapter_tree ct ON c.parent_id = ct.idWHERE c.deleted = 0 -- 假设只查询未被逻辑删除的记录
    )
    SELECT * FROM chapter_tree;
  2. 查询子集sql,不包含自己:
    WITH RECURSIVE chapter_tree AS (-- 种子部分:从给定ID开始SELECT id, parent_id, nameFROM zhkt_course_chapterWHERE id = 1833078203409809409 -- 这里替换为具体的ID值UNION ALL-- 递归部分:查找子节点SELECT c.id, c.parent_id, c.nameFROM zhkt_course_chapter cJOIN chapter_tree ct ON c.parent_id = ct.idWHERE c.deleted = 0 -- 假设只查询未被逻辑删除的记录
    )
    -- 最终查询:选择所有子节点,但排除初始ID
    SELECT * FROM chapter_tree
    WHERE id != 1833078203409809409; -- 排除初始ID

http://www.ppmy.cn/news/1524368.html

相关文章

最新版微服务项目搭建

一,项目总体介绍 在本项目中,我将使用alibabba的 nacos 作为项目的注册中心,使用 spring cloud gateway 做为项目的网关,用 openfeign 作为服务间的调用组件。 项目总体架构图如下: 注意:我的Java环境是17…

如何区分html和html5

HTML与HTML5在多个方面存在显著的区别。以下是对这些区别的详细分析: 1. 概念区别 HTML:HTML是HyperText Markup Language(超文本标记语言)的缩写,是一种用于创建网页和网页应用程序的标准标记语言。它通过一系列的标…

C++20那些事之何时使用可能性属性?

C20 引入了 [[likely]] 和 [[unlikely]] 这两个可能性属性,它们会给编译器优化提示,表示对应代码路径可能/不可能被执行。 乍一看,这似乎是一组很不错的属性,通过编译器优化,从而提高性能。但是事实并不是如此。 在C 标…

自动化立体仓库定义及使用范围

导语 大家好,我是社长,老K。专注分享智能制造和智能仓储物流等内容。 新书《智能物流系统构成与技术实践》人俱乐部 这份文件是关于自动化立体仓库的定义、发展、组成、技术性能、应用领域、供货方式以及设计步骤的详细介绍。以下是核心内容的概要&#…

Java 入门指南:JVM(Java虚拟机)—— Java 内存运行时的数据区域

前言 对于 Java 程序员来说,在虚拟机自动内存管理机制下,不再需要像 C/C程序开发程序员这样为每一个 new 操作去写对应的 delete/free 操作,不容易出现内存泄漏和内存溢出问题。 由于程序员把内存控制权利交给 Java 虚拟机,一旦…

【数学建模】2024年国赛成绩公布时间预测

经过三天三夜的奋战,2024年数学建模国赛也宣告结束,相信这几天超高强度的比赛也让大家精疲力竭了,所以经过几天的调整,大家都恢复过来了吧。能够在高强度的压力下坚持这么久,大家都超级厉害的! 当然完整提交…

解锁 macOS 剪贴板历史记录,高效复制、粘贴技巧

在Mac上,我们经常需要在不同文档之间复制和粘贴内容。然而,macOS自带的剪贴板只能保存最后一个复制项,这大大限制了我们的工作效率。幸运的是,一些第三方应用程序可以帮助我们查看和管理剪贴板的历史记录,从而提升我们…

排查 MyBatis XML 配置中的 IF 语句与传值名称不匹配的 Bug

文章目录 本文档只是为了留档方便以后工作运维,或者给同事分享文档内容比较简陋命令也不是特别全,不适合小白观看,如有不懂可以私信,上班期间都是在得 前言,在改一个bug得时候发现一个有意思得问题,就是myb…