如何在MySQL中以树形结构提取数据?在单个查询中[duplicate]

tvz2xvvm  于 2023-02-15  发布在  Mysql
关注(0)|答案(1)|浏览(107)
    • 此问题在此处已有答案**:

How to create a MySQL hierarchical recursive query?(16个答案)
四年前关闭了。
我在MySQL中有一个表,表中的每个元组都是同一个表中元组的子元组。为此,我插入数据主ID作为合作伙伴ID。请参考下面的示例。

这里'A'父节点有两个子节点'B'和'C',类似地,'B'有'D','C'有'E'分别作为它们的子节点。下图显示了一个示例

现在,回到Question,我想获取给定父节点的所有子节点。假设我传递G的id 7,它应该获取JKL记录。如果我传递A的id 1,它应该获取所有记录。我如何在SQL查询中实现这一点?我不知道如何构建这个MySQL查询。

rkttyhzu

rkttyhzu1#

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

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

看看这个小提琴,看看它的作用。还有,这是一个非常相似的问题,我已经提到,创造这个答案。
下一次,请尝试提供Minimal, Complete and Verifiable Example(对于这样的情况,可能是SQL Fiddle),以便愿意回答的人可以轻松回答。

相关问题