一尘不染

删除其中一些表格后,修复mysql表行ID中的空白

mysql

我有一个超过17000行的mysql表。我从其中的一部分删除了大约530行。现在,每一行都有一个顺序的AUTO-
INCREAMENTED数字主键。如您所了解,现在已删除了若干行编号。所以我只想问问有没有办法以某种完美的顺序再次修复所有行?


阅读 244

收藏
2020-05-17

共1个答案

一尘不染

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

SET @count = 0;
UPDATE table SET table.id = @count:= @count + 1;

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

ALTER TABLE table AUTO_INCREMENT = 1;

这会将下一个ID重置为MAX(id)+1来自docs

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

ALTER TABLE t2 AUTO_INCREMENT = value;

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

2020-05-17