我在 MySQL 中有一个表,其中表中的每个元组都是同一个表中元组的子级。为此,我插入数据主 ID 作为合作伙伴 ID。请参阅以下示例。
这里“A”父母有两个孩子“B”和“C”,类似地,“B”有“D”,“C”有“E”作为他们的孩子。下图显示了一个示例
现在,来到问题,我想获取给定父级的所有子级。假设如果我传递G的 id 7,它应该获取J,K和L记录。如果我传递 的Aid 1 它应该获取所有记录。如何在 SQL 查询中实现此目的?我不知道如何构建这个 MySQL 查询。
这可以使用递归查询来完成,如下所示。
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),以便愿意回答的人可以轻松回答。
| 归档时间: |
|
| 查看次数: |
2796 次 |
| 最近记录: |