重置ID而不删除行(非AUTO_INCREMENT)

时间:2016-02-08 19:42:08

标签: php mysql mysqli phpmyadmin

我正在寻找一个简单的解决方案,让我的表中的ID列从0开始并自动增加而不删除行或不必手动更改数据库中的ID。

我在表格中有大约120行,第一条记录以ID开头:2,我希望这是' 0'和所有其他行按升序更新。

我理解如果删除了所有行,AUTO_INCREMENT将解决此问题。

您可以通过下表查看数字的排序方式。

MySQL Table IDs

我希望我能够正确地解释自己,并且非常感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

编写子查询,生成从旧ID到新ID的映射。将其与UPDATE查询中的表格结合使用。

UPDATE yourTable AS t1
JOIN (
  SELECT id, @newID := @newID + 1 AS newID
  FROM yourTable
  JOIN (SELECT @newID := -1) AS vars
  ORDER BY id) AS new ON t1.id = new.id
SET t1.id = new.newID;

DEMO