更新sql中从上一行开始的列值

时间:2014-10-11 06:19:17

标签: mysql sql sql-server

我有一个包含列名ID(主键)的表。

在这里我的值从1到152。

现在我想更新表格,以便从109到152的id增加1。

当我运行这个sql

 update category set id=(id+1) where id<152 and id>108

它给出了错误,因为当它将ID = 109更新为110时,它在下一行中发现了110的副本。

所以我该怎么办呢。

我可以从152的最后一行开始更新并在108上停止。

2 个答案:

答案 0 :(得分:4)

我猜你正在使用MySQL。如果是这样,您可以使用order by

执行此操作
update category
    set id = id + 1
    where id > 108 and id < 152
    order by id desc;

假设id为正数,则以下内容适用于任何数据库(假设未声明该列&#34;未签名&#34;):

update category
    set id = -(id + 1)
    where id > 108 and id < 152;

update category
    set id = -id
    where id < 0;

答案 1 :(得分:0)

分两步完成。首先添加10,000(或任何其他未使用的范围),然后减去9999.不要忘记在第二步中调整标准。