我有一张桌子,描述了层次关系,没有大小限制。一个简单的例子是:
|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。
答案 0 :(得分:0)
经过更多谷歌搜索后,我根据以下问题提出了一些建议: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))
我还没有在一些非常大的层次结构上对其进行过测试,但是到目前为止,它似乎可以满足我的要求。