如何在 MySQL 中获取树结构中的数据? [复制]

Posted

技术标签:

【中文标题】如何在 MySQL 中获取树结构中的数据? [复制]【英文标题】:How to fetch data in a tree structure in MySQL? [duplicate] 【发布时间】:2018-11-23 20:02:45 【问题描述】:

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

这里的'A'父母有两个孩子'B'和'C',同样,'B'有'D'和'C'有'E'作为他们的孩子。下图显示了一个示例

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

【问题讨论】:

【参考方案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 Fiddle),以便愿意回答的人方便。

【讨论】:

以上是关于如何在 MySQL 中获取树结构中的数据? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何通过java代码复制MySQL中新建数据库中的数据库结构?

如何在 [mysql] DBMS 中存储基于树的分层数据? [复制]

如何获取 Mysql 的数据库脚本? [复制]

MySQL索引

mysql 数据库怎么复制一张表?

MySQL 复制表:如何准确无误的创建复制表?