在MySQL中的列上增加主键/唯一值
我的目标是在MySQL数据库中的表中增加+7个主键值 Tablename=table,主键=id 例如:在MySQL中的列上增加主键/唯一值,mysql,sql,sql-update,primary-key,unique,Mysql,Sql,Sql Update,Primary Key,Unique,我的目标是在MySQL数据库中的表中增加+7个主键值 Tablename=table,主键=id 例如: id name surname 1 John Doe 2 Mary McCain 3 Sam Smith 4 Roy Jenson 我需要把它变成 id name surname 8 John Doe 9 Mary McCain 10 Sam Smith 11 Roy Jenson 这样我
id name surname
1 John Doe
2 Mary McCain
3 Sam Smith
4 Roy Jenson
我需要把它变成
id name surname
8 John Doe
9 Mary McCain
10 Sam Smith
11 Roy Jenson
这样我可以在现有行之前再插入7行
我试过:
UPDATE table SET id = id + 7
但我得到了一个错误:
Failed to execute SQL : SQL UPDATE table SET id = id + 7 failed : Duplicate entry '2' for key 1
老实说,我真的不知道如何解决这个问题,还因为我在该表中有122000多个条目,如果不是几周的话,也需要几天的时间手动逐个更新它们。只需在更新查询的末尾添加
ORDER by ID DESC
:
UPDATE table SET id = id + 7 ORDER BY ID DESC;
看见
在给定的SQLFiddle中尝试删除orderby
,您将得到相同的错误
在进行此操作之前,请先进行备份。
如果试图进行减法,则需要在
ORDER BY
子句中使用ASC
而不是DESC
UPDATE table SET id = id - 7 ORDER BY ID ASC;
查看更改对象的
Id
的原因是什么?是的,这很有意义。。。如果您从最低id开始并增加它,那么可能已经有一个元素具有这样的id,这与您的方法不同。@Cthulhu-是的。和ASC
for。当你在座位上移动时,你不能坐在别人的膝盖上!让最后一个人先做。