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