mysql - 嵌套集的深度

标签 mysql tree nested-sets depth

我有一个大型 mysql 表,其父子关系存储在嵌套集模型中(左值和右值)。

它可以轻松找到给定项目的所有子项。

现在,我如何找到某个项目的深度。

行示例:

Parent_ID、Taxon_ID、Taxon_Name、lft、rgt

对于 somerow(taxon_id) 我想知道它距离根节点有多远。

现在,这里可能需要注意的是,我的数据结构方式是每个终端节点(没有自己的子节点的节点)lft = rgt。我知道网上发布的许多示例都有 rgt = lft +1,但为了方便起见,我们决定不这样做。

摘要: 嵌套集模型,需要找到给定节点的深度(到达根的节点数)。

最佳答案

我明白了。

本质上,您必须查询包含您要查找的节点的所有节点。例如,我正在查看一个具有 lft=rgt=7330 的节点,我想要它的深度。我只需要

Select count(*) 
 from table 
 where lft<7330 
 AND   rgt>7330

在使用结果之前,您可能需要将其加 1,因为它实际上告诉您之前的代数,而不是实际级别。但它有效而且速度很快!

关于mysql - 嵌套集的深度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12269806/

相关文章:

R:圣诞树

mysql - 自 MySQL 5.5 以来的 BIGINT 超出范围错误

跨表的 MySQL 嵌套集模型计数

java - 通用 N 元树(每个子节点有两个以上节点的树)Java 中使用列表遍历节点的树

java - 返回二叉树中节点的父节点

sqlite - 使用rowid的sqlite中的公用表表达式

php - 如何在 mysql 查询列表中包含条件列?

mysql - MySQL 索引如何工作?

mysql - 使用 SQLite 按字段排序

MySQL - 使用设置差异与操作数应包含 1 列