背景
在Mysql转存过程中使用以下SQL语句,出现Err 1062的报错。
INSERT INTO dbbackup.tb1 SELECT*FROMtb1
主键或联合主键对应的数据已存在。
[Err] 1062 - Duplicate entry '1-1' for key 'PRIMARY'
解决方案
1、使用NotIn过滤掉主键冲突
INSERT INTO dbbackup.tb1 SELECT*FROMtb1WHERE(key1, key2) NOT IN (SELECTkey1,key2FROMdbbackup.tb1);
2、使用 Not Exists过滤掉主键冲突
INSERT INTO dbbackup.tb1 SELECT*FROMdbz. tb1WHERENOT EXISTS(SELECTdbbackup.tb1.`name`FROMdbbackup.tb1 WHERE dbbackup.tb1.key1 = dbz.tb1.key1 and dbbackup.tb1.key2= dbz.tb1.key2);
3、插入前先清空表
DELETE FROM dbbackup.tb1;INSERT INTO dbbackup.tb1 SELECT*FROMtb1;