【问题标题】:How do I update a table to add a primary key and update all of the existing rows with incremented IDs?如何更新表以添加主键并使用递增的 ID 更新所有现有行?
【发布时间】:2011-12-20 19:40:52
【问题描述】:

我有一个包含 20,000 行数据的表,我导入了该表,但我忘记在其上放置主键,以便每一行都有一个唯一键。

我希望第一行从 ID 1 开始并一直递增到最后一行并在 ID 20000 处结束。如何使用单个查询更新所有行?

我正在使用 MySQL。曾尝试使用 PhpMyAdmin,但它不会这样做。

【问题讨论】:

    标签: mysql sql database indexing auto-increment


    【解决方案1】:

    添加新的 ID 列后(暂时不要设置为主键,也不要开启自动递增)运行:

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

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

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

    【讨论】:

    • 哇。我现在需要这个供 Oracle 使用。那里也有任何提示吗?
    【解决方案2】:

    更改tablename 并运行以下 SQL 语句。它将创建一个名为 id 的新主键,并从第一行作为 1 开始填充它。

    ALTER TABLE `tablename` ADD COLUMN id INT(10) AUTO_INCREMENT NOT NULL FIRST, ADD PRIMARY KEY (id);
    

    【讨论】:

      猜你喜欢
      • 2012-07-29
      • 2022-09-23
      • 2020-09-01
      • 1970-01-01
      • 2012-08-11
      • 2018-06-29
      • 1970-01-01
      • 2018-04-03
      • 2018-07-03
      相关资源
      最近更新 更多