mysql - 在 MySQL 中管理分层数据

标签 mysql sql nested-sets hierarchical

我看到了这篇文章 http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/但我没有得到“添加新节点”部分。

它说我可以这样做来添加一个新节点:

SELECT @myRight := rgt FROM nested_category
WHERE name = 'TELEVISIONS';

UPDATE nested_category SET rgt = rgt + 2 WHERE rgt > @myRight;
UPDATE nested_category SET lft = lft + 2 WHERE lft > @myRight;

INSERT INTO nested_category(name, lft, rgt) VALUES('GAME CONSOLES', @myRight + 1, @myRight + 2);
  1. 在运行时我会知道父节点而不是兄弟节点。
  2. 如果节点根本没有兄弟节点怎么办?
  3. 如何添加新的根节点?

最佳答案

sibling 无所谓。您只需拥有其 parent_id 即可添加新节点。 它是这样工作的:将节点添加为父节点的最左子节点,然后更新节点的 lft 和 rgt,使其位置在新节点(树的所有节点)的右侧。树的所有节点现在都在更新。

要添加一个新的根节点,你应该将其parent_id设置为NULL。

希望对你有用

关于mysql - 在 MySQL 中管理分层数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8694920/

相关文章:

php - 如何在php表单产品表中显示mysql blob图像

java - JPA 获取太多的实体类对象,即使它不是 rqquired

sql - 对所有结果进行分组 SQL Server

mysql - 有多少个 "entities"在这个层次结构之下。嵌套集/邻接(英国境内有多少个 POI)

jquery将新的li添加到嵌套集模型

mysql - 什么是 SQL Server UPDATE() 触发器函数的 MySQL 等价物?

javascript - PHP if 语句将允许我将项目添加到数据库但不会让 Javascript 中的 echo 或 alert

sql - Oracle SQL Developer 复制数据库步骤

sql - 在分组/聚合期间连接/合并数组值

sql - 嵌套集模型 : Inserting Node at the end of SubNodes