【数据库-MySql】[Err] 1062 - Duplicate entry '1-1' for key 'PRIMARY'

背景

在Mysql转存过程中使用以下SQL语句,出现Err 1062的报错。

INSERT INTO dbbackup.tb1 SELECT
	*
FROM
	tb1

主键或联合主键对应的数据已存在。

[Err] 1062 - Duplicate entry '1-1' for key 'PRIMARY'

解决方案

1、使用Not In 过滤掉主键冲突

INSERT INTO dbbackup.tb1 SELECT
	*
FROM
	tb1
WHERE
	(key1, key2) NOT IN (
		SELECT
			key1,
			key2
		FROM
			dbbackup.tb1
	);

2、使用 Not Exists 过滤掉主键冲突

INSERT INTO dbbackup.tb1 SELECT
	*
FROM
	dbz. tb1
WHERE
	NOT EXISTS(
		SELECT
			dbbackup.tb1.`name`
		FROM
			dbbackup.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
	*
FROM
	tb1;

 

 

你可能感兴趣的:(数据库-MySql)