我有两个表,其中包含大量的列。它们都是相同的结构,但是数据不同。但是,两个表都有一个可能相似的索引/自动增量列。有没有一种简单的方法来运行这样的命令:

insert into table1 (select * from table2);


并让插入内容忽略表2中的自动增量列?为了避免错误,如果表1和2的索引列中存在相似的值?我想复制所有内容,并为表1中的表2数据添加新的自动增量。

另外,我不在乎自动增量索引的值是多少。如果有一种方法可以合并两个表,然后重新生成同样有效的唯一AI列。

我知道我可以通过在两个表中分别指定每个字段并省略自动增量列来解决此问题。我只是想知道是否有更简单的方法来做到这一点?如果没有,是否有一种简单的方法来生成字段列表/语句?

最佳答案

这是我现在所知道的最有效的方法。假设人工智能索引称为“ recno”

ALTER TABLE table1 DROP COLUMN recid;
ALTER TABLE table2 DROP COLUMN recid;
insert into table1 (select * from table2);
ALTER TABLE table1 ADD `recid` INT NOT NULL AUTO_INCREMENT [AFTER `column`], ADD PRIMARY KEY (`recid`);
ALTER TABLE table2 ADD `recid` INT NOT NULL AUTO_INCREMENT [AFTER `column`], ADD PRIMARY KEY (`recid`);

关于mysql - 最简单的方法是将表插入到具有相互矛盾的自动增量值的表中?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47599402/

10-11 02:38