MySQL 中的分层查询:使用深度优先搜索遍历祖先
确定分层数据中的祖先关系是数据库管理中的一项常见任务。在 MySQL 中,分层查询允许您有效地从嵌套结构中导航和检索数据。
假设您有一个名为“mytable”的表,其中有两列“a”和“b”,代表分层的父子关系关系:
| a | b | ---------- | 1 | 2 | | 2 | 3 | | 3 | 4 | | 4 | 5 | | 3 | 6 | | 4 | 7 |
考虑要检索给定节点的所有祖先的场景,例如查找所有父母、祖父母等在节点 5 上。
Profondità 中使用的解决方案:
MySQL 使用深度优先搜索 (DFS) 方法提供分层查询解决方案。这是完成此操作的查询:
SELECT @id := ( SELECT senderid FROM mytable WHERE receiverid = @id ) AS person FROM ( SELECT @id := 5 ) vars STRAIGHT_JOIN mytable WHERE @id IS NOT NULL
分析:
通过执行此查询,您将检索节点 5 的祖先列表:4、3、2 和 1。此方法使用 DFS 方法有效地遍历层次结构,使您能够在 MySQL 数据库中导航复杂的父子结构。
以上是MySQL的深度优先搜索如何有效检索层次结构中某个节点的所有祖先?的详细内容。更多信息请关注PHP中文网其他相关文章!