如何合并两个具有主键的相同表?

时间:2016-08-11 15:41:45

标签: mysql merge

这似乎是一项简单的任务,但我很难找到一种方法来做到这一点。我有两个表(A和B)具有相同的结构。两者都有一个自动增量主键。我希望表B中的数据进入表A.我试过:

insert into A select * from B

但是我收到主键已经存在的错误。当我将它们插入表A时,我希望表B中的新行获得一个新的主键 - 所以基本上从B中丢弃主键但插入所有其他列。看起来它应该是一个简单的查询,但我无法弄清楚。谢谢。

2 个答案:

答案 0 :(得分:2)

您还要选择(并插入)auto_increment id,如果此ID已存在则会失败。要让mysql自动分配id,只需选择并插入除id:

之外的所有值
INSERT INTO A (foo, bar, baz)
SELECT foo, bar, baz FROM B

答案 1 :(得分:0)

您必须指定要从表B插入到表A的列,因为您要创建一个新的ID,您可以使用如下的查询,假设column1是我们不想插入的键。< / p>

insert into A (column2, column3) select column2, column3 from B 

您还可以在此link查找具有一些优秀查询示例的内容。