将自动增量 ID 添加到现有的升序列?

Posted

技术标签:

【中文标题】将自动增量 ID 添加到现有的升序列?【英文标题】:Add Auto-Increment ID to existing ascending column? 【发布时间】:2016-07-23 12:51:31 【问题描述】:

我有一个预先存在的表,其中包含“fname”、“lname”、“email”、“rgtime”和“ip”。但现在我想要一个自动增量列。

我正在尝试根据'rgtime'注册时间的升序值添加'rgid'自动增量升序值 p>

如何通过升序'rgtime'的值来添加自动增量列

这使得 id 随机自动递增值

ALTER TABLE `myTable` ADD COLUMN `id` INT AUTO_INCREMENT UNIQUE FIRST;

但这不是我想要的。

感谢任何帮助。

【问题讨论】:

你能举个例子说明你在找什么吗? 【参考方案1】:

创建具有相同结构但具有 id 字段的新表。然后运行查询

INSERT INTO MyTable2 SELECT NULL, * FROM MyTable ORDER BY rgtime

然后检查是否一切正常,然后删除MyTable并将MyTable2重命名为MyTable

【讨论】:

根据问题,他也应该加上“order by rgtime”。 哦,是的。心里有,但是忘记了。谢谢。顺便说一句,您可以随时编辑答案,添加您认为必要的任何内容 如果您愿意,您可以在一个查询中完成所有这些操作(CREATE、INSERT、INDEX)。 不行,因为两张表的字段数不同。所以你应该在语句中设置字段列表和MyTable一样。 NULL 根据我的测试在这种情况下是不可接受的。也许是正确的INSERT INTO MyTable2(....) SELECT * FROM MyTable ORDER BY rgtime

以上是关于将自动增量 ID 添加到现有的升序列?的主要内容,如果未能解决你的问题,请参考以下文章

MySQL 序列与 id 列的自动增量

每组值的自定义序列/自动增量

每组值的自定义序列/自动增量

NestJs/Mongoose 中的自动增量序列

oracle DB 中的自动增量替代方案

格瑞斯 GORM。将映射添加到现有的休眠映射