【发布时间】:2019-10-31 06:10:14
【问题描述】:
我不小心推送了为新行分配 ID(在 0 到 1000000 之间随机生成)而不是自动递增的代码。所以目前是这样的情况:
ID, Name
1, foo
2, bar
79812, baz
89991, qux
幸运的是,在我发现问题之前不久,我只是想知道是否有可能将行重置为其可能的自动递增 id,所以它看起来像:
ID, Name
1, foo
2, bar
3, baz
4, qux
【问题讨论】:
-
不,一般情况下不可能这样做,除非您有一列一直在跟踪原始订单。你有这样的专栏吗?
-
@TimBiegeleisen 我想假设 ID 不正确的行是 1) 在按 ID asc 排序时是安全的 2) 第一个不按顺序排列的数字 (2 -> 79812) 3) 直到最后一个。
-
如果您确定
ID的值一直在增加(并且永远不会回溯到较小的值),那么您可以使用ROW_NUMBER() OVER (ORDER BY ID)来生成您想要的序列。
标签: mysql auto-increment