1

在 mysql 中,我有一个使用邻接表模型表示的树。

MYTREE
   id
   parent_id
   title

我想知道:

给定一个节点的 id,有没有办法选择该节点下的整个树,并包含深度信息?这棵树的深度是任意的,所以我不能说可能有多少层。但结果集可能看起来像这样:

ID      TITLE     DEPTH
4       title1    1
8       title2    2
16      title8    3
9       title3    2
15      title4    3

我知道使用嵌套集模型可以做到这一点。但是嵌套集有些东西并不理想,我希望不必切换。

感谢您的建议!

4

2 回答 2

0

简短的回答:没有。

遍历用父指针表示的树的唯一方法是在下一组之后跟随一组父 ID。如果您可以通过简单地在表格中多次加入来限制深度,那么这是可能的,但是对于无限深度,应用程序端循环通常是要走的路。

于 2010-06-10T19:14:10.967 回答
0

编辑:我没有注意到标题中任意深的条款:

您可以编写一个存储过程来递归行。

但是嵌套集有什么不理想的(至少插入前触发器或存储过程无法处理)?

于 2010-06-10T19:16:12.040 回答