MySQL嵌套集在选定节点上方添加节点

标签 mysql sql nested-sets

我已经尝试解决这个问题有一段时间了,我有一个 MySQL 查询来将节点添加到列表中,例如:

Heren

-Pakken

-Schoenen

Dames

我想在男性之前添加“ child ”。在这种情况下,有人会说:在男性之前添加 child 。

这是在男性之后添加 child 的查询。

LOCK TABLE categories WRITE;

SELECT @myRight := rght FROM categories WHERE name = 'Male';

UPDATE categories SET rght = rght + 2 WHERE rght > @myRight; UPDATE categories SET lft = lft + 2 WHERE lft > @myRight;

INSERT INTO categories(name, lft, rght) VALUES('Children', @myRight + 1, @myRight + 2);

UNLOCK TABLES;

所以,来自:http://cl.ly/image/1U3O2k1F2I1T至:http://cl.ly/image/1D0k1Z1D2c18

谢谢:)

最佳答案

弄清楚了:

LOCK TABLE `categories` WRITE;

SELECT @myLeft := `lft` FROM `categories`
WHERE `id` = '. $where .';

UPDATE `categories` SET `rght` = `rght` + 2 WHERE `rght` > @myLeft;
UPDATE `categories` SET `lft` = `lft` + 2 WHERE `lft` > @myLeft OR `lft` = @myLeft;

INSERT INTO `categories`(`name`, `lft`, `rght`) VALUES("'. $name .'", @myLeft, @myLeft + 1);

UNLOCK TABLES;

关于MySQL嵌套集在选定节点上方添加节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19102241/

相关文章:

mysql - 你的sql语法有误

mysqld_safe UNIX 套接字文件的目录 '/var/run/mysqld' 不存在

mysql - 如何修复 ERROR 1064 (42000) 语法错误?

mysql - 嵌套集索引和性能

mysql - 嵌套集中节点的事务安全插入?

php - Laravel 5.6,制作多个页面注册并将输入数据保存到 session

sql - 将 CTE 与分层数据和 'cumulative' 值结合使用

php - Doctrine - 如何在 postSave() 事件中获取 SQL INSERT 查询?

sql - 改变 Postgres 序列的最小值

algorithm - 如何有效地将嵌套集转换为对象层次结构