如何合并两个表(包括主键和范围限制)

时间:2015-01-13 10:41:19

标签: mysql sql database innodb

我昨天做了一个mystake并在mysql表中删除了一些行(幸运的是我已经设置了LIMIT 2000)。

现在我想使用备份再次仅插入已删除的行。我得到了:

tb_production:

id (primary key)   col1     col2
--------------------------------
   1               data     data
   2               data     data
   6               data     data
   9               data     data

如您所见,缺少行。 现在我想将备份表中缺少的行插入(上面)生产表中:

tb_backup:

   id (primary key)   col1     col2
    --------------------------------
       1               data     data
       2               data     data
       3               data     data
       4               data     data
       5               data     data
       6               data     data
       7               data     data
       8               data     data
       9               data     data

我已经在stackoverflow(How can I merge two MySQL tables?)上找到了一个很好的答案,给出了答案:

  

INSERT IGNORE INTO table_1 SELECT * FROM table_2;

我不想再犯另一个错误,所以我问你:

如何将备份表中的行合并到生产表中,不覆盖生产表中的现有行,再次使用 LIMIT 2000

1 个答案:

答案 0 :(得分:0)

请尝试以下查询

INSERT INTO tb_production(id,col1,col2)
    SELECT bkp.id,bkp.col1,bkp.col2 FROM tb_backup bkp LEFT JOIN tb_production prd
    ON bkp.id=prd.id WHERE prd.id IS NULL ORDER BY bkp.id LIMIT 2000;