我看过很多类似标题或兴趣的问题,但与我要找的不同。
我已经有一个包含一些数据的表,带有一个id列。我希望表中已存在的数据的ID(几千行)保持不变。我想INSERT
来自另一个表格的不同数据,其中还包含ID - 此集合中只有超过92,000行 - 我需要将这些ID更改为其他一些不存在的ID以免覆盖或取代现有数据。
这可能吗?我可以在INSERT
上做某种增量吗?
我尝试了一个INSERT IGNORE
语句,但它取代了那里的数据。
有关尝试的建议吗?
答案 0 :(得分:0)
要从除{1以外的AUTO_INCREMENT
值开始,请使用CREATE TABLE或ALTER TABLE设置该值,如下所示:
mysql> ALTER TABLE tbl AUTO_INCREMENT = 100;
答案 1 :(得分:0)
如果您的第一个表格中的id
是auto_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 演示