当前位置: 首页 > 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;

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

相关文章:

  • 随记 使用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 多功能集成冲突问题解决方案
  • Charles里怎么进行断点调试
  • 用Python撬动量化交易:深入探索开源利器vnpy
  • 理解系统交互:UML时序图
  • 【Kubernetes】架构与原理:核心概念、组件协同及容器化部署解析
  • 数据库管理与高可用-PostgreSQL日常维护
  • 手机解压 7z 文件全攻略
  • 稳定币的监管
  • Etcd数据持久化机制:WAL与Snapshot解析
  • Springboot中 MyBatis-Flex TableDef 的使用
  • 宝塔安装MySQL无法远程连接【已解决】