gpt4 book ai didi

mysql - 仅从查询获取parent>child1_1>child1_1_1>child1_1_1_1结构

转载 作者:行者123 更新时间:2023-11-29 07:46:08 29 4
gpt4 key购买 nike

我有一个包含 3 列的表格,例如:

name | id | parent_id

XYZ | 1 | 2
ZYX | 3 | 1
YXZ | 4 | 3

是否可以仅从 mysql 查询中检索一个可以简单地读取为字符串的结果,如“parent>child1_1>child1_1_1>child1_1_1_1”等?层次结构树的最大深度为 4,“父级”的parent_id=0。用 php 构建它让我很头疼。

更具体地说,父类别有多个子类别,子类别也有多个子类别...我想获取所有记录,例如“计算机>网络>路由器”、“计算机>网络>交换机”等结果。

非常感谢!

最佳答案

通常这是使用递归ctes完成的,mysql不支持它

由于您的深度只有 4 级,因此您可以使用 self left join 来连接父级,如下所示

concat_ws 用于连接名称。

更新了获取最深子 ID 的答案,因为这需要使用 coalesce

select  coalesce(t3.id,t2.id, t1.id) as deepChildId, 
concat_ws('->', t.name ,t1.name, t2.name, t3.name ) as childList
from Table1 t
left join Table1 t1
on t.id = t1.parent_id
left join Table1 t2
on t1.id = t2.parent_id
left join Table1 t3
on t2.id = t3.parent_id
where t.parent_id =0

关于mysql - 仅从查询获取parent>child1_1>child1_1_1>child1_1_1_1结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27747171/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com