希望你们中的一些mysql专家可以帮助我。
如果树中存在间隙,那么我不想要更深的孩子。
示例:
root (depth 0)
sub-cat 1 (depth 1)
subsub-cat 1 (depth 2)
subsubsubsub-cat 1 (depth 4)
在这种情况下,深度为3的节点是禁用的,我不需要节点subsubsubsub -ub 1和更深
结构:
id | parent_id | lft | rgt | depth | title
默认查询:
select *
from categories
where lft >= '1' and lft < '10000'
order by lft asc
谢谢!
答案 0 :(得分:0)
差距(如&#34;删除的中间节点&#34;,缺少parent_id
或depth
- 值中的跳转)难以检测甚至在嵌套集中定义(并且嵌套集不需要这些列,但如果您只想隐藏节点及其所有子节点,可以通过向树中添加标记列来轻松完成,例如hidden
,只使用那些没有隐藏前任(或隐藏自己)的节点:
select *
from categories as node
where not exists
(select 1 from categories as preds
where node.lft >= preds.lft
and node.rgt <= preds.rgt
and preds.hidden = 1)
order by node.lft;