首页 > 解决方案 > 使用 SQL 命令更改 MySQL 数据库中的 ID 值

问题描述

我的 MySQL 数据库中有一个表,其中id条目的 's 开始,3000因为之前的行已被删除。我想要实现的是更改id列的值。我需要从1. 如果我有1900条目,我需要id's from 1to 1900。我的数据库中的 id 列设置为AUTO_INCREMENTisid主键。

我的问题是,是否可以使用 SQL 命令来实现这一点?还是我应该创建一个新数据库并使用 new 传输对象id

标签: mysqlsql

解决方案


如此处所述https://stackoverflow.com/a/43137256/5031885

UPDATE table_name SET id  = 0 - id;
set @counter = 0;
UPDATE table_name SET id  = (@counter := @counter + 1);

这将首先将所有 id 值设置为负等值,然后循环每一行,更新和递增计数器。

如果 id 列未签名,则此解决方案将不起作用。另外,请记住,这不会更改当前的 AUTO_INCREMENT 指针。

为了帮助自动增量,您可以使用:

ALTER TABLE table_name AUTO_INCREMENT = 1;

即使我们将 1 分配给 AUTO_INCREMENT,它也会继续使用下一个键。


推荐阅读