如何在MySQL中获取树形结构的数据?在单个查询中

Sid*_*uri 2 mysql

我在 MySQL 中有一个表,其中表中的每个元组都是同一个表中元组的子级。为此,我插入数据主 ID 作为合作伙伴 ID。请参阅以下示例。

在此输入图像描述

这里“A”父母有两个孩子“B”和“C”,类似地,“B”有“D”,“C”有“E”作为他们的孩子。下图显示了一个示例

在此输入图像描述

现在,来到问题,我想获取给定父级的所有子级。假设如果我传递G的 id 7,它应该获取J,KL记录。如果我传递 的Aid 1 它应该获取所有记录。如何在 SQL 查询中实现此目的?我不知道如何构建这个 MySQL 查询。

Rom*_*rra 5

这可以使用递归查询来完成,如下所示。

SELECT  id,
        name,
        parent 
FROM    (SELECT * FROM items
         ORDER BY parent, id) items_sorted,
        (SELECT @iv := '5') initialisation
WHERE   find_in_set(parent, @iv)
AND     length(@iv := concat(@iv, ',', id));
Run Code Online (Sandbox Code Playgroud)

看看这个小提琴,看看它的实际效果。另外,这是我为了创建这个答案而提到的一个非常相似的问题。

下次,请尝试提供一个最小、完整且可验证的示例(对于这样的情况可能是一个 SQL Fiddle),以便愿意回答的人可以轻松回答。