MySQL 表的主键一般都要使用自增 ID (AUTO_INCREMENT) ,当你删除其中一条,会造成自增 ID 不连续,这可能导致需要使用 ID 进行判断时的不准确。这里分情况记录一下解决方法。


一、删除全部数据的情况

  • 如果用的是navicat客户端,选中数据表,右键使用截断表而非清空表
  • 如果用的是命令行,使用:truncate table 表名;




二、删除部分数据的情况

如果刚刚删除完部分数据还没有新增数据,使用如下命令校正自增id。这里的1不是指从1开始,而是从最大值加1开始自增。

alter table 表名 auto_increment=1;



如果删除完部分数据后又添加了部分数据,即已经出现了不连续的id序列,此时就需要重置该序列。有两种方法:

方法1:

SET @auto_id = 0;
UPDATE 表名 SET 自增字段名 = (@auto_id := @auto_id + 1);
ALTER TABLE 表名 AUTO_INCREMENT = 1;


方法2:

先删除id列,然后新增id列同时设为主键并自增

alter table 表名 drop 自增字段名;
alter table 表名 add 自增字段名 int not null PRIMARY KEY auto_increment first;