如何使用MYSQL在新表中创建新ID

时间:2013-12-13 06:09:56

标签: mysql

我看过很多类似标题或兴趣的问题,但与我要找的不同。

我已经有一个包含一些数据的表,带有一个id列。我希望表中已存在的数据的ID(几千行)保持不变。我想INSERT来自另一个表格的不同数据,其中还包含ID - 此集合中只有超过92,000行 - 我需要将这些ID更改为其他一些不存在的ID以免覆盖或取代现有数据。

这可能吗?我可以在INSERT上做某种增量吗?

我尝试了一个INSERT IGNORE语句,但它取代了那里的数据。

有关尝试的建议吗?

2 个答案:

答案 0 :(得分:0)

要从除{1以外的AUTO_INCREMENT值开始,请使用CREATE TABLE或ALTER TABLE设置该值,如下所示:

mysql> ALTER TABLE tbl AUTO_INCREMENT = 100;

答案 1 :(得分:0)

如果您的第一个表格中的idauto_increment列,那么您可以省略它

INSERT INTO table1 (column2, column3, column4, ...) -- id is omitted
SELECT column2, column3, column4, ... -- id is also omitted
  FROM table2

如果不是这种情况,并假设它是一次性操作,您可以尝试以下列方式分配新ID

INSERT INTO table1 (id, column2, column3, column4, ...)
SELECT t.max_id + s.id, s.column2, s.column3, s.column4, ...
  FROM
(
  SELECT @n := @n + 1 id, column1
    FROM table2 CROSS JOIN (SELECT @n := 0) i
   ORDER BY id
) s JOIN 
(
  SELECT MAX(id) max_id
    FROM table1
) t

这是 SQLFiddle 演示