mysql存左右无限级如何来更新
时间: 2023-07-04 09:22:30 浏览: 51
在 MySQL 中,存储左右无限级关系的数据通常使用嵌套集模型。更新嵌套集模型的节点通常需要执行以下步骤:
1. 查找要更新的节点以及其所有后代节点的左右值。
2. 计算要更新的节点及其后代节点的左右值的偏移量。
3. 更新所有左值大于或等于当前节点的节点的左值和右值。
4. 更新所有右值大于当前节点的节点的右值。
5. 更新当前节点的左值和右值。
下面是一个实现更新嵌套集模型的节点的示例 SQL 查询:
```
SET @myLeft := 0, @myRight := 0;
UPDATE categories
SET lft = (@myLeft := @myLeft + 1), rgt = (@myRight := @myRight + 1)
WHERE id = :categoryId;
UPDATE categories
SET lft = (CASE
WHEN lft BETWEEN @myLeft AND @myRight THEN lft + :offset
ELSE lft
END),
rgt = (CASE
WHEN rgt BETWEEN @myLeft AND @myRight THEN rgt + :offset
ELSE rgt
END)
WHERE rgt > @myRight;
```
在这个查询中,`categories` 表存储了左右无限级关系的数据,`id` 列是节点的唯一标识符,`lft` 列是节点的左值,`rgt` 列是节点的右值。这个查询使用了 MySQL 的用户定义变量来保存当前节点的左右值,然后更新所有需要更新的节点的左右值。