MySQL 中的分层查询
处理分层数据时,检索给定节点的父母、祖父母和进一步祖先的能力变得至关重要的。本文深入探讨了如何在 MySQL 中使用递归查询来完成此任务。
给定一个具有由 a 和 b 列表示的父子关系的表,我们可以使用以下查询来查找特定的所有祖先节点,无论其深度如何:
SELECT @id := (SELECT senderid FROM mytable WHERE receiverid = @id) AS person FROM ( SELECT @id := 5 ) vars STRAIGHT_JOIN mytable WHERE @id IS NOT NULL
此查询以子查询开头,该子查询将 @id 变量设置为提供的节点(本例中为 5)。然后,外部查询连接该变量上的表,有效地向上遍历层次结构,直到不再有父级。 STRAIGHT_JOIN 语法确保查询以自上而下的方式进行。
查询的结果将是给定节点的祖先列表,首先列出根祖先:
1 2 3 4
通过理解这种方法,开发人员可以有效地导航 MySQL 中的层次结构,使他们能够对具有父子关系的数据执行复杂的查询。这对于从家谱到组织层次结构的应用程序尤其有价值。
以上是如何使用递归查询检索 MySQL 分层数据库中节点的所有祖先?的详细内容。更多信息请关注PHP中文网其他相关文章!