我昨天做了一个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 ?
答案 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;