我们如何将数据从一个表复制到第一个表中不存在的另一个表中。在表中,其中一列是主键。
INSERT INTO table SELECT * FROM db2.table;
ERROR 1062 (23000): Duplicate entry '100001' for key 'id_UNIQUE'
试试这个:
INSERT INTO table
SELECT T1.*
FROM db2.table T1
LEFT JOIN table T2
ON T1.Id = T2.Id
WHERE T2.Id IS NULL;
您可以使用谓词NOT IN
这样做:
INSERT INTO table1
SELECT *
FROM db2.table2
WHERE table1ReferenceID NOT IN(SELECT id_UNIQUE FROM table1);
这将检查是否table1ReferenceID
在第一个表中找到它。因此,该SELECT
子句将选择第二个表中的所有行,除了第一个表 table1 中已经出现的行。
注意:该列是第二个表中table1ReferenceID
的引用。id_UNIQUE
其他替代方法是LEFT JOIN
按照@HamletHakobyan的回答和NOT EXISTS
.
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));