我有一个MySQL表,其中包含大约2,600个现有行,每个行都有自己的主键。
这些主键有很多随机值。我想用一组从零开始的新数字替换它们。请记住,我想更改现有行的主键值。
这可以在phpMyAdmin或MySQL中完成吗?
答案 0 :(得分:2)
安全的做法是删除现有的列和主键并分配新列。
alter table t drop primary key, add newkey int primary key auto_increment;
这将添加一个新的自动递增的主键。
您可以在SQL Fiddle找到此信息。
答案 1 :(得分:2)
您可以使用user defined variable:
执行此操作set @i := -1; -- one less than the first id value you want
update mytable set
id = (@i := @i + 1)
order by id;
order by
可确保密钥保持相同的顺序,并防止ID在更新中发生冲突。
在SQLFiddle中查看live demo。