mysql - 如何选择分层 mysql 表中节点的所有父节点?

标签 mysql tree hierarchical

我有一个 MySQL 表,它表示树形 GUI 组件的数据,这是我的表的结构:

treeTable ( 
  id INT NOT NULL PRIMARY KEY, 
  parentId INT, 
  name VARCHAR(255) 
);

parentId 是一个自引用外键。

现在我想编写一个存储过程,它获取节点 ID 并返回包含该节点及其所有父节点的结果集。

例如,假设我的表中填满了以下数据:

1, null, 'root'
2, 1   , 'level_1'
3, 2   , 'level_2'

现在我想获取节点 3 的所有父节点(节点 1 和 2)并返回一个包含所有树记录的结果集。有人可以帮帮我吗?

最佳答案

好问题。在 Oracle 中,您会使用 CONNECT BY 之类的东西。

由于您使用的是 MySQL,我建议您更改数据结构以有效地回答该查询。 Here是一些想法。

关于mysql - 如何选择分层 mysql 表中节点的所有父节点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2594778/

相关文章:

tree - 如何证明堆数据结构中的 child 位于: 2*n and 2*n+1?

c++ - Hierarchical State Machine 涉及的原理是什么,如何实现基本模型?

php - 根据 id 变量删除帖子 - 不同的用户 session

mysql - 如何将其他表的数据添加到双单表MySQL查询中?

arrays - 在数组中搜索特定范围内的整数

algorithm - 树算法

Scala:嵌套类型层次结构上的模式匹配

sql - 如何查询存储在表中的消息,以便获得按发件人分组的消息和按时间排序的组?

mysql - 选择日期格式为 'YYYY-MM' 的记录到给定范围

mysql - 使用 LIKE 语句连接两个表