如何更新表以添加主键并使用递增的ID更新所有现有行?

5

我有一个包含20,000行数据的表格,但我忘记给它设置主键,以使得每一行都有唯一的键。

我想让第一行从ID 1开始,并递增到最后一行,最终以ID 20000结束。如何使用单个查询更新所有行?

我正在使用MySQL。我尝试过使用PhpMyAdmin,但它无法完成此操作。

2个回答

6

在添加新的ID列后(暂时不要将其设置为主键,也不要打开自动增量),运行以下命令:

SET @index = 1;
UPDATE tablename SET ID = (@index:=@index+1);

这将为您现有的每一行设置一个从1开始递增的ID值,从而解决了在已输入数据后尝试插入新的主键列时可能遇到的重复键问题。

完成此操作后,您可以将ID列设置为自动递增的主键。


哇,我现在需要这个针对Oracle的东西。你有什么提示吗? - towi

4
更改tablename并运行以下SQL语句。它将创建一个名为id的新主键,并从第一行开始填充为1。
ALTER TABLE `tablename` ADD COLUMN id INT(10) AUTO_INCREMENT NOT NULL FIRST, ADD PRIMARY KEY (id);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接