SQL语法:将列值派生为UPDATE,以考虑前一列值的值

时间:2012-03-06 17:05:07

标签: mysql sql

我有一个表,我需要使用从前一个记录的值派生的值来更新所有记录。

例如,给定三个字段idlftrgt,我需要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语法表达它?

  • 如果记录的id2,则lft将等于3rgt等于4
  • 鉴于记录的id3lft等于5rgt等于6
  • 如果记录的id4,则lft将等于7rgt等于8

如此简单的算术运算(例如,考虑id的值)将不会轻易考虑lftrgt的值。

谢谢,

马特

[更新]

这是MySQL 5.1.52

1 个答案:

答案 0 :(得分:0)

你还没有说出你想要的id值最低的记录的值。

如果您希望最低ID(或没有id - 1记录)的值保持不变,您可以UPDATE使用子查询ORDER BY和{{1 }}:

COALESCE