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

mysql递归查询所有父节点拼接父节点名称

只能查询单条
WITH RECURSIVE parent_cte AS (
SELECT id, name, parentId
FROM tbl_customer
WHERE id = 2 – 起始节点ID
UNION ALL
SELECT d.id, d.name, d.parentId
FROM tbl_customer d
INNER JOIN parent_cte p ON d.id = p.parentId
)
SELECT GROUP_CONCAT(name ORDER BY parentId ASC SEPARATOR ’ -> ') AS parent_names
FROM parent_cte ;
解释:

‌递归CTE(Common Table Expression)‌:

WITH RECURSIVE parent_cte AS (…) 定义了一个递归CTE,名为parent_cte。
基础查询部分(SELECT id, name, parentId FROM tbl_customer WHERE id = 2)选择了起始节点(id=2)。
递归查询部分(SELECT d.id, d.name, d.parentId FROM tbl_customer d INNER JOIN parent_cte p ON d.id = p.parentId)通过自连接递归地查找父节点。
‌字符串拼接‌:

SELECT GROUP_CONCAT(name ORDER BY parentId ASC SEPARATOR ’ -> ‘) AS parent_names FROM parent_cte 使用GROUP_CONCAT函数将所有父节点的名称按parentId升序拼接成一个字符串,并使用’ -> '作为分隔符。
默认查询所有,单条查询在最后的查询语句中添加条件即可
WITH RECURSIVE CategoryPath AS (
SELECT
id,
name,
parentId,
name AS path_name
FROM
tbl_customer
WHERE
parentId=0 – 假设顶级分类的parentId为0
UNION ALL
SELECT
c.id,
c.name,
c.parentId,
CONCAT(cp.path_name, ’ -> ', c.name) AS path_name
FROM
tbl_customer c
JOIN
CategoryPath cp ON c.parentId = cp.id
)
SELECT
id,
path_name AS full_path_name
FROM
CategoryPath;

相关文章:

  • 随记 使用certbot申请ssl证书
  • 去除百度AI图像中包含的水印内容
  • 【亲测可行】linux安装miniforge miniconda无痛迁移到miniforge
  • 保险丝的作用、基本参数和选型
  • 使用R进行数字信号处理:婴儿哭声分析深度解析
  • 如何创建vue工程?以及遇到问题的解决方法
  • 佰力博科技与您探讨铁电材料电滞回线测量法
  • 从一组线段中得出四边形的算法
  • 代码训练LeetCode(29)最后一个单词的长度
  • (LeetCode 动态规划(基础版) )337. 打家劫舍 III (深度优先搜索dfs)
  • [特殊字符] Altair:用Python说话,让数据自己讲故事!!!
  • SpringBoot使用oshi获取服务器相关信息
  • innovus自动绕RDL线
  • GIS数据制备,空间分析与高级建模实践技术应用
  • C++异常处理深度解析:try-catch全方位指南
  • GPT-ArcGIS 在生态评价中的综合应用:多因子权重分析与适宜性制图
  • aardio 类与对象基础
  • 中钧科技三大平台破局企业数字化转型:告别“人肉运维”,拥抱“数据自驱”!
  • Python基础数据类型与运算符全面解析
  • 【WebSocket】WebSocket 多功能集成冲突问题解决方案
  • 设计网站推荐外网/百度教育
  • 衢州做网站公司/运营商推广5g技术
  • 新沂网站制作/图片优化是什么意思
  • 淄博学校网站建设报价/seo网站优化培训找哪些
  • wordpress 禁用响应/百度优化
  • 网站关键词更改/今天的新闻发布会