我有一个表,我需要使用从前一个记录的值派生的值来更新所有记录。
例如,给定三个字段id
,lft
和rgt
,我需要lft
作为(({current id
- 的值) 1)lft
)+ 2)和rgt
为(((当前id
- 1)'rgt
)+ 2)的值。我暗示拥有意味着select lft where id=[current id-1]
和select rgt where id=[current id-1]
如何用正确的SQL语法表达它?
id
为2
,则lft
将等于3
,
rgt
等于4
。id
为3
,
lft
等于5
,rgt
等于6
。id
为4
,则lft
将等于7
,
rgt
等于8
。如此简单的算术运算(例如,考虑id
的值)将不会轻易考虑lft
和rgt
的值。
谢谢,
马特
[更新]
这是MySQL 5.1.52
。
答案 0 :(得分:0)
你还没有说出你想要的id值最低的记录的值。
如果您希望最低ID(或没有id - 1
记录)的值保持不变,您可以UPDATE
使用子查询ORDER BY
和{{1 }}:
COALESCE