我有一张桌子,描述了层次关系,没有大小限制。一个简单的例子是:
|ParentID |Child ID|
|1 |2 |
|2 |3 |
|1 |4 |
|5 |6 |
我需要一个查询,对于给定的父母,给出所有孩子的完整清单,直到
3
只会返回4
,而对于1
它将返回2,3,4
。我从SQL Server的许多年开始刚接触MySQL,因此仍然习惯于其更高级的查询功能的工作方式。在SO上有一些示例,但是它们仅适用于深度固定的层次结构。我使用的是MySQL 5.7,可惜没有CTE。
最佳答案
经过更多谷歌搜索后,我根据以下问题提出了一些建议:How to create a MySQL hierarchical recursive query
select distinct ChildID
from (select * from ParentChild) children,
(select @ids := 1) top_level
where find_in_set(ParentID, @ids)
and length(@ids := concat(@ids, ',', ChildID))
我尚未在某些非常大的层次结构上对其进行过测试,但到目前为止,它似乎可以满足我的要求。
关于mysql - 如何从单个联接表展平层次结构,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58166368/