如何在MySQL中的树结构中获取数据?

时间:2018-06-14 06:16:53

标签: mysql

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

enter image description here

这里' A'父母有两个孩子' B'和C'类似地,' B'已经' D'和' C'有' E'分别作为他们的孩子。示例如下图所示

enter image description here

现在,来问问题,我想要获取给定父母的所有孩子。假设我通过了G的ID 7,它应该获取JKL条记录。如果我传递A的ID为1,则应该获取所有记录。如何在SQL查询中实现此目的?我不知道如何构建这个MySQL查询。

1 个答案:

答案 0 :(得分:1)

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

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));

查看this fiddle以查看此操作。另外,我提到的this is a very similar question来创建这个答案。

下次,请尝试提供Minimal, Complete and Verifiable Example(对于这样的案例,可能是一个SQL小提琴),这样对于愿意回答的人来说很容易。