我在MySQL中有一个表,其中表中的每个元组都是同一个表中元组的子元素。为此,我将数据主ID作为合作伙伴ID插入。请参阅以下示例。
这里' A'父母有两个孩子' B'和C'类似地,' B'已经' D'和' C'有' E'分别作为他们的孩子。示例如下图所示
现在,来问问题,我想要获取给定父母的所有孩子。假设我通过了G
的ID 7,它应该获取J
,K
和L
条记录。如果我传递A
的ID为1,则应该获取所有记录。如何在SQL查询中实现此目的?我不知道如何构建这个MySQL查询。
答案 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小提琴),这样对于愿意回答的人来说很容易。