我已经尝试解决这个问题有一段时间了,我有一个 MySQL 查询来将节点添加到列表中,例如:
Heren
-Pakken
-Schoenen
Dames
我想在男性之前添加“ child ”。在这种情况下,有人会说:在男性之前添加 child 。
这是在男性之后添加 child 的查询。
LOCK TABLE
categories
WRITE;SELECT @myRight :=
rght
FROMcategories
WHEREname
= 'Male';UPDATE
categories
SETrght
=rght
+ 2 WHERErght
> @myRight; UPDATEcategories
SETlft
=lft
+ 2 WHERElft
> @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/