如何合并具有相同结构的两个MySQL表?
两个表的主键将会冲突,所以我已经考虑到了这一点。
发布于 2009-04-07 13:04:19
您还可以尝试:
INSERT IGNORE
INTO table_1
SELECT *
FROM table_2
;
这允许table_1中的那些行取代table_2中具有匹配主键的那些行,同时仍然插入具有新主键的行。
或者,
REPLACE
INTO table_1
SELECT *
FROM table_2
;
将用table_2中的相应行更新table_1中已有的那些行,同时插入具有新主键的行。
发布于 2009-04-07 13:02:21
这取决于主键的语义。如果只是自动递增,那么使用下面这样的代码:
insert into table1 (all columns except pk)
select all_columns_except_pk
from table2;
如果PK有意义,您需要找到一种方法来确定哪条记录应该具有优先级。您可以创建一个select查询来首先查找重复项(请参见answer by cpitis)。然后删除您不想保留的记录,并使用上面的insert来添加剩余的记录。
发布于 2009-04-07 13:00:44
INSERT
INTO first_table f
SELECT *
FROM second_table s
ON DUPLICATE KEY
UPDATE
s.column1 = DO_WHAT_EVER_MUST_BE_DONE_ON_KEY_CLASH(f.column1)
https://stackoverflow.com/questions/725556
复制相似问题