首页 > 解决方案 > 如何调整自动增量?

问题描述

祝大家有美好的一天。所以我在 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中的行

标签: mysqlsql

解决方案


通常,您应该避免手动干预自动增量列。这意味着,除其他外,当您向表中插入数据时,您应该省略自动增量列,从而允许 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使用用户变量。


推荐阅读