mysql只获取嵌套集树

时间:2016-07-09 11:58:33

标签: mysql nested-sets

希望你们中的一些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

谢谢!

1 个答案:

答案 0 :(得分:0)

差距(如&#34;删除的中间节点&#34;,缺少parent_iddepth - 值中的跳转)难以检测甚至在嵌套集中定义(并且嵌套集不需要这些列,但如果您只想隐藏节点及其所有子节点,可以通过向树中添加标记列来轻松完成,例如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;