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

Ehs*_*hmi 11 mysql tree hierarchical

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

treeTable ( 
  id INT NOT NULL PRIMARY KEY, 
  parentId INT, 
  name VARCHAR(255) 
);
Run Code Online (Sandbox Code Playgroud)

parentId 是一个自引用外键.

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

例如,假设我的表已填充此数据:

1, null, 'root'
2, 1   , 'level_1'
3, 2   , 'level_2'
Run Code Online (Sandbox Code Playgroud)

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

Pab*_*ruz 3

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

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