在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
我知道可以使用嵌套集模型执行此操作。但是有些嵌套的东西并不理想,我希望不必切换。
感谢您的建议!
答案 0 :(得分:0)
简答:不。
遍历用父指针表示的树的唯一方法是在下一个之后跟随一组父ID。如果您可以通过简单地在表中连接多次来限制深度,那么这是可能的,但是通过无限深度,应用程序端循环通常是可行的方法。
答案 1 :(得分:0)
编辑:我没有注意到标题中任意深的条款:
您可以编写一个存储过程来递归行。
但是嵌套集的优点是什么(至少在插入触发器或存储过程之前无法处理)?