在我们删除其中一些后,修复mysql表行id中的空白

Hem*_*dia 5 mysql

我有一个超过17000行的mysql表.我从中间部分删除了大约530行.现在每行都有一个连续的AUTO-INCREAMENTED数字主键.您现在可以理解,已删除了几行数.所以我只是想问一下,有什么方法可以在一些完美的顺序中再次修复所有行?

Man*_*eUK 22

您可以使用此主键作为外键,小心其他表

SET @count = 0;
UPDATE table SET table.id = @count:= @count + 1;
Run Code Online (Sandbox Code Playgroud)

这将更新id表的列table...然后您需要重置auto_increment:

ALTER TABLE table AUTO_INCREMENT = 1;
Run Code Online (Sandbox Code Playgroud)

这将重置下一个MAX(id)+1来自文档的 ID :

要更改要用于新行的AUTO_INCREMENT计数器的值,请执行以下操作:

ALTER TABLE t2 AUTO_INCREMENT = value;  
Run Code Online (Sandbox Code Playgroud)

您不能将计数器重置为小于或等于任何已使用的值.对于MyISAM,如果该值小于或等于AUTO_INCREMENT列中当前的最大值,则该值将重置为当前最大值加一