当前位置: 首页 > news >正文

基于 MySQL 递归 CTE 实现表,父级id与子级id拼接

1、函数

xr_test.tb_content替换成自己的表

CREATE DEFINER=`root`@`%` FUNCTION `get_related_ids`(start_id BIGINT) RETURNS varchar(1000) CHARSET utf8mb4 COLLATE utf8mb4_general_ci
    DETERMINISTIC
BEGIN
    DECLARE result_ids VARCHAR(1000);

    -- 使用递归 CTE 查找所有相关的 id
    WITH RECURSIVE related_nodes AS (
        -- 初始查询:从起始节点开始
        SELECT id
        FROM xr_test.tb_content
        WHERE id = start_id AND is_deleted = 0

        UNION ALL

        -- 递归部分:查找子节点
        SELECT u.id
        FROM xr_test.tb_content u
        JOIN related_nodes rn ON u.parent_id = rn.id
        WHERE u.is_deleted = 0
    )
    -- 将查询结果的 id 用逗号连接起来
    SELECT GROUP_CONCAT(id)
    INTO result_ids
    FROM related_nodes;

    RETURN result_ids;
END

2、调用

-- 调用函数,传入起始节点的 id
SELECT get_related_ids(1892822043159773186) ids;

3、结果

在这里插入图片描述

相关文章:

  • 零信任应用侧理性选择并期许未来
  • 捷 C++ 课程学习笔记:STL 应用与复杂度分析
  • 【react】基础教程
  • 【Linux-网络】从逻辑寻址到物理传输:解构IP协议与ARP协议的跨层协作
  • 求解动态完全未知的连续时间非线性系统的优化控制的全局自适应动态规划算法
  • KubeSphere平台安装
  • 面试八股文--数据库基础知识总结(1)
  • 应无所住而生其心:心灵的自在与解脱
  • 深入理解IP子网掩码子网划分{作用} 以及 不同网段之间的ping的原理 以及子网掩码的区域划分
  • 中国的Cursor! 字节跳动推出Trae,开放Windows版(附资源),开发自己的网站,内置 GPT-4o 强大Al模型!
  • Flutter使用permission_handler请求通知权限不会弹出权限弹窗
  • C语言(13)------------>do-while循环
  • Teigha(ODA<Open Design Alliance>_开放设计联盟)——cad c# 二次开发
  • 英式英语与美式英语的单词拼写差异
  • 第4章 4.3 EF Core 的实体类配置 Data Annatation Fluent API
  • 死锁是什么
  • git 小乌龟安装包及中文包
  • 计网学习————(二)
  • 第十三:路由两个注意点:
  • web组态可视化编辑器
  • 国家发改委:系统谋划7方面53项配套举措,推动民营经济促进法落地见效
  • 习近平在河南洛阳市考察调研
  • 电子凭证会计数据标准推广至全国
  • 蒲慕明院士:未来数十年不是AI取代人,而是会用AI的人取代不会用的
  • 刘小涛任江苏省委副书记
  • 美官方将使用华为芯片视作违反美出口管制行为,外交部回应