合并两个MySQL表

时间:2012-06-26 19:41:39

标签: php mysql merge

我需要将生产mysql数据库中任何缺失的行从还原的备份数据库合并到同一台机器上。

如何在保留原始主键ID(自动增量)的同时执行此操作。

2 个答案:

答案 0 :(得分:1)

您可以尝试:

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中已有的行,同时插入带有新主键的行。

答案 1 :(得分:0)

--create a backup just in case
CREATE TABLE table_prod_sav SELECT * FROM table_prod;

--insert the missing rows
INSERT INTO table_prod (id, field) 
    SELECT b.id, b.field 
    FROM table_backup b LEFT JOIN table_prod p ON b.id = p.id
    WHERE p.id IS NULL;

--Check consistency...

--DROP TABLE table_prod_sav;