MySQL 合并两张表

MySQL 合并两张表

情况:崩溃(或黑客攻击,我仍不确定)后,vB_users 表中的某些内容消失了。我有该表的三月备份,但从那时起就有了新记录。有没有一种快速的方法可以将崩溃表中的所有行添加到备份表并重写现有行?我的意思是,将它们合并起来,但崩溃的版本应该优先于旧版本。

答案1

假设崩溃的表位于名为 current 的数据库中,恢复的备份位于名为 backup 的数据库中,并且有一个名为 id 的主键:

create table current.tempUsers as select * from backup.vB_users ub where not exists (select 1 from current.vB_Users uc where uc.id = ub.id);

insert into current.vB_users select * from current.tempUsers; 

drop table current.tempUsers;

答案2

重命名崩溃的表,恢复备份(从 MARCH?哎哟),重命名一、用旧名称创建一个新表,然后执行以下操作:

INSERT INTO vB_users SELECT * FROM crashed_table UNION SELECT * FROM restored_table;

如果记录具有相同的 PK 但不同的值,这可能无法正常工作;您可能需要做一些偷偷摸摸的事情来解决这个问题。

相关内容