mysql - 如何调整自动增量?
问题描述
祝大家有美好的一天。所以我在 excel 中有很多数据需要插入到数据库中,但我没有注意到我插入了一个重复的值(因为 hr 没有把它整理出来)。
所以无论如何,这是交易
[id][name]
[1][name1]
[2][name2] // I want to delete this row
[3][name3]
[4][name4]
我想删除第 2 行。我想让 id 自动调整,例如,
[id][name]
[1][name1]
[2][name3] // The id will adjust
[3][name4]
这有可能实现吗?或者,如果没有,我可以做些什么?
PS:我的数据已经是50k了,我想删除7k中的行
解决方案
通常,您应该避免手动干预自动增量列。这意味着,除其他外,当您向表中插入数据时,您应该省略自动增量列,从而允许 MySQL 自动为其分配值。
也许最好的解决方案是使用第三个时间戳列来记录插入每条记录的时间。然后,您可以使用ROW_NUMBER
来生成您想要的序列,例如
SELECT
ROW_NUMBER() OVER (ORDER BY ts_column) id,
name
FROM yourTable
ORDER BY
id;
您也许还可以ROW_NUMBER
使用该id
列进行排序,并获得相同的结果。如果您使用的 MySQL 版本早于 8+,那么您可以模拟ROW_NUMBER
使用用户变量。
推荐阅读
- azure-webjobs - Visual Studio 或 Web 作业不尊重 host.json
- git - 为什么存在未跟踪文件时 git describe 不给我脏后缀?
- java - 如何在java中打开多个服务器套接字连接?
- python - 将 SConstruct 移植到 Python 3
- python - 如何以 HHMM 形式将时间作为用户的输入,然后在那时运行一个函数
- android - Angular Cordova Project (Android) 未打开 Razorpay 外部页面(输入 OTP/输入登录凭据页面)
- javascript - 如何从#authentication.getPrincipal() 获取多个数据。在Javascript中
- c++ - 在 Microsoft 接口定义语言中处理一维数组
- javascript - Three.js - 如何更新 Raycaster 和 Intersection 的对象位置
- r - 如何在 R 中通过 yaml.load() 保留 YAML 注释 (#)