1

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

如何在保留自动递增的原始主键 ID 的同时做到这一点。

4

2 回答 2

2

你可以试试:

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 中已经存在的那些行,同时插入具有新主键的行。

于 2012-06-26T19:45:31.997 回答
1
--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;
于 2012-06-26T19:45:58.477 回答