我有一个超过17000行的mysql表。我从其中的一部分删除了大约530行。现在,每一行都有一个顺序的AUTO- INCREAMENTED数字主键。如您所了解,现在已删除了若干行编号。所以我只想问问有没有办法以某种完美的顺序再次修复所有行?
您可以 但要小心 使用此主键作为外键的其他表
SET @count = 0; UPDATE table SET table.id = @count:= @count + 1;
这将更新id表的列table…然后您需要重置auto_increment:
id
table
ALTER TABLE table AUTO_INCREMENT = 1;
这会将下一个ID重置为MAX(id)+1来自docs:
MAX(id)+1
要更改用于新行的AUTO_INCREMENT计数器的值,请执行以下操作: ALTER TABLE t2 AUTO_INCREMENT = value; 您不能将计数器重置为小于或等于已使用的值。对于MyISAM,如果该值小于或等于AUTO_INCREMENT列中当前的最大值,则该值将重置为当前的最大值加1。
要更改用于新行的AUTO_INCREMENT计数器的值,请执行以下操作:
ALTER TABLE t2 AUTO_INCREMENT = value;
您不能将计数器重置为小于或等于已使用的值。对于MyISAM,如果该值小于或等于AUTO_INCREMENT列中当前的最大值,则该值将重置为当前的最大值加1。