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

时间:2012-02-23 15:52:43

标签: mysql

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

2 个答案:

答案 0 :(得分:20)

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

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

这将更新表id的{​​{1}}列...然后您需要重置auto_increment:

table

这会将docs的下一个ID重置为ALTER TABLE table AUTO_INCREMENT = 1;

  

更改要用于new的AUTO_INCREMENT计数器的值   行,执行此操作:

MAX(id)+1
     

您无法将计数器重置为小于或等于任何值的值   已经被使用过。对于MyISAM,如果值小于或等于   到当前在AUTO_INCREMENT列中的最大值,该值   重置为当前最大值加一

答案 1 :(得分:-1)

使用php有一个简单的解决方法,我刚刚对其进行了测试。

$count = 0;  
while ($row = mysqli_fetch_array($res)){
         $count++;
mysqli_query($con, "UPDATE table SET id='".$count."' WHERE id='".$row['id']."'"); 
         }