重新索引MySQL INT主键和&重置AUTO_INCREMENT

时间:2011-07-08 19:23:07

标签: php mysql database auto-increment

所以我有一个MySQL数据库,我正在使用PHP网站。在几周的发展过程中,我留下了类似的东西:

Table: users

id  | name
-----------
  12| Bob
  34| Jen
 155| John
 154| Kyle

除了数百条记录以外,这些数据都是成千上万的。

我正在寻找一个可以运行的脚本,将键重命名为最低值(保留各自的行),然后将AUTO_INCREMENT重置为下一个ID

所需的输出是:

Table: users

id  | name
-----------
   1| Bob
   2| Jen
   3| Kyle
   4| John

ALTER TABLE users AUTO_INCREMENT = 5;

(请注意KyleJohn

我意识到我必须修复任何引用users.id的内容。

有没有人知道在MySQL或PHP脚本中执行此操作的方法?

2 个答案:

答案 0 :(得分:5)

删除id上的索引

做这样的事情:

SET @rank:=0;
update users
set id=@rank:=@rank+1
order by id;

在id上添加索引

答案 1 :(得分:1)

为什么需要更改数据库中名称的顺序?您只需在sql查询中添加ORDER BY name子句,即可按名称的字母顺序获取结果。