如何合并两个表(包括主键和范围限制)
how to merge two tables (incl. Primary Key and Range Limit)
我昨天做了一个 mystake 并删除了 mysql table 中的一些行(幸运的是我设置了 LIMIT 2000)。
现在我想使用备份再次插入已删除的行。我得到了:
tb_production:
id (primary key) col1 col2
--------------------------------
1 data data
2 data data
6 data data
9 data data
如您所见,缺少行。
现在我想将备份 table 中丢失的行插入(以上)生产 table:
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
我在Whosebug(How can I merge two MySQL tables?)上找到了一个很好的答案,给定的答案:
INSERT IGNORE INTO table_1 SELECT * FROM table_2;
不想再犯错,所以请教:
如何将备份table中的行合并到生产table、而不覆盖生产table中的现有行和再次 LIMIT 2000?
请尝试以下查询
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;
我昨天做了一个 mystake 并删除了 mysql table 中的一些行(幸运的是我设置了 LIMIT 2000)。
现在我想使用备份再次插入已删除的行。我得到了:
tb_production:
id (primary key) col1 col2
--------------------------------
1 data data
2 data data
6 data data
9 data data
如您所见,缺少行。 现在我想将备份 table 中丢失的行插入(以上)生产 table:
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
我在Whosebug(How can I merge two MySQL tables?)上找到了一个很好的答案,给定的答案:
INSERT IGNORE INTO table_1 SELECT * FROM table_2;
不想再犯错,所以请教:
如何将备份table中的行合并到生产table、而不覆盖生产table中的现有行和再次 LIMIT 2000?
请尝试以下查询
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;