首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有多个树时使用修改的预序树遍历进行选择

有多个树时使用修改的预序树遍历进行选择
EN

Stack Overflow用户
提问于 2015-01-02 20:41:35
回答 1查看 94关注 0票数 1

出于优化的原因,我已经实现了一个修改过的预排序树遍历如前所述。我的桌子是这样的:

代码语言:javascript
复制
+----+-----------+------+-------+
| id | parent_id | left | right |
+----+-----------+------+-------+
|  1 |      NULL |    1 |     4 | 
|  2 |         1 |    2 |     3 | 
|  3 |      NULL |    1 |     4 | 
|  4 |         3 |    2 |     3 | 
+----+-----------+------+-------+

也就是说,表中有任意数量的树。如果节点的父id为空,那么这就自动意味着节点是其树的基础。

本文指出,可以非常简单地选择节点的所有后代:

代码语言:javascript
复制
SELECT *
FROM table
WHERE
    left > ? 
    AND
    right < ?

现在我的问题是,选择显然将包括其他树的节点。毕竟,我甚至还没有指定一棵树。是否可以使用该模型从一棵指定的树中选择节点?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-02 21:19:03

不要用left = 1启动新树,使用MAX(right) +1作为left值。这不会影响其他节点操作,树将被左-右分隔.

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27748285

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档