我们如何将数据从一个表复制到第一个表中不存在的另一个表中。在表中,列中的一列是主键。
INSERT INTO table SELECT * FROM db2.table;
ERROR 1062 (23000): Duplicate entry '100001' for key 'id_UNIQUE'
答案 0 :(得分:3)
试试这个:
INSERT INTO table
SELECT T1.*
FROM db2.table T1
LEFT JOIN table T2
ON T1.Id = T2.Id
WHERE T2.Id IS NULL;
答案 1 :(得分:3)
您可以使用谓词NOT IN
来执行此操作:
INSERT INTO table1
SELECT *
FROM db2.table2
WHERE table1ReferenceID NOT IN(SELECT id_UNIQUE FROM table1);
这将检查第一个表中是否找到table1ReferenceID
或者是否。因此,SELECT
子句将选择第二个表中的所有行,但第一个表table1中已经显示的行除外。
请注意:列table1ReferenceID
是第二个表中id_UNIQUE
的引用。
其他替代方法是按@HamletHakobyan's answer和LEFT JOIN
的建议NOT EXISTS
。
答案 2 :(得分:0)
WHERE [primary_key_table1] not IN (SELECT [primary_key_table2] FROM [table2])
所以我建议像
INSERT INTO table (SELECT * FROM db2.table WHERE id NOT IN (SELECT id FROM table));