mysql - 使用 SQL 命令更改 MySQL 数据库中的 ID 值
问题描述
我的 MySQL 数据库中有一个表,其中id
条目的 's 开始,3000
因为之前的行已被删除。我想要实现的是更改id
列的值。我需要从1
. 如果我有1900
条目,我需要id
's from 1
to 1900
。我的数据库中的 id 列设置为AUTO_INCREMENT
isid
主键。
我的问题是,是否可以使用 SQL 命令来实现这一点?还是我应该创建一个新数据库并使用 new 传输对象id
?
解决方案
如此处所述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,它也会继续使用下一个键。
推荐阅读
- javascript - 如何上传视频并在 HTML 页面中显示?
- python - 如何在我的 CLI 中列出所有并发 python 进程?
- python - 变量如何通过空字典进行检查
- javascript - vue.js 可以使用自定义指令插入子元素或子组件吗
- java - 为什么递归导致计数返回 2 而不是 4?
- java - 访问字段时出错 [Springboot 数据 JPA 中的私有 int?
- android - Admob 再次限制广告投放,因为 Google Play 商店暂停了一个应用程序
- c# - 反序列化 api 调用响应内容,而无需创建表示内容的模型
- icons - 如何使用 lottie-web 在 angular11 中获取动画图标?
- django - 将特定组的 django 用户排序在顶部