当前位置: 首页 > 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、结果

在这里插入图片描述

http://www.dtcms.com/a/35325.html

相关文章:

  • 零信任应用侧理性选择并期许未来
  • 捷 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组态可视化编辑器
  • C语言函数学习笔记
  • 【js面试】JavaScript中执行栈和执行上下文是什么?
  • GraphRAG如何使用ollama提供的llm model 和Embedding model服务构建本地知识库
  • 【C++11】 并发⽀持库
  • next.js-学习2
  • Python常用的15个标准模块
  • 如何选择适合项目的自动化测试工具?
  • Linux项目自动化构建工具-make/Makefile (linux第六课)
  • DeepSeek 助力 Vue 开发:打造丝滑的文本输入框(Text Input)
  • vue框架后遗症∶被遗忘的dom操作