我有一个包含列名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上停止。
答案 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.不要忘记在第二步中调整标准。