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

  • 表结构,这里只是个例子,所有的树形结构表均可用:
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, name
        FROM zhkt_course_chapter
        WHERE id = 1833077834931814401 -- 这里替换为具体的ID值
        UNION ALL
        SELECT c.id, c.parent_id, c.name
        FROM zhkt_course_chapter c
        JOIN chapter_tree ct ON c.parent_id = ct.id
        WHERE c.deleted = 0 -- 假设只查询未被逻辑删除的记录
    )
    SELECT * FROM chapter_tree;
  2. 查询子集sql,不包含自己:
    WITH RECURSIVE chapter_tree AS (
        -- 种子部分:从给定ID开始
        SELECT id, parent_id, name
        FROM zhkt_course_chapter
        WHERE id = 1833078203409809409 -- 这里替换为具体的ID值
        
        UNION ALL
        
        -- 递归部分:查找子节点
        SELECT c.id, c.parent_id, c.name
        FROM zhkt_course_chapter c
        JOIN chapter_tree ct ON c.parent_id = ct.id
        WHERE c.deleted = 0 -- 假设只查询未被逻辑删除的记录
    )
    -- 最终查询:选择所有子节点,但排除初始ID
    SELECT * FROM chapter_tree
    WHERE id != 1833078203409809409; -- 排除初始ID
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值