php - 重新索引 MySQL INT 主键并重置 AUTO_INCREMENT

标签 php mysql database auto-increment

所以我有一个用于 PHP 站点的 MySQL 数据库。在数周的开发过程中,我得到了类似的东西:

Table: users

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

除此之外还有数百条记录并且 ID 数以千计。

我正在寻找一个我可以运行的脚本来将键重命名为它们的最小值(保留它们各自的行),然后将 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 脚本执行此操作的方法吗?

最佳答案

删除 id 上的索引

做这样的事情:

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

在id上添加索引

关于php - 重新索引 MySQL INT 主键并重置 AUTO_INCREMENT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6629402/

相关文章:

javascript - 我在登录表单中不断收到错误的用户名和密码

php - php邮件中的抄送不起作用

mysql - MySQL JDBC版本是否必须与服务器匹配

php part2中的phpmyadmin查询错误

MySQL 全文搜索?

php - 如何通过点击结帐按钮来更新产品数量的值?

php - Laravel mySql 加入

php - 优化 MySQL 或 PHP 的搜索功能

database - 在数据库中存储匿名信息

MySql phpMyAdmin : Replicating/Synchronizng two Database automatically