1

我们如何将数据从一个表复制到第一个表中不存在的另一个表中。在表中,其中一列是主键。

INSERT INTO table SELECT * FROM db2.table; 
ERROR 1062 (23000): Duplicate entry '100001' for key 'id_UNIQUE'
4

3 回答 3

3

试试这个:

INSERT INTO table
SELECT T1.*
FROM db2.table T1
    LEFT JOIN table T2
       ON T1.Id = T2.Id
WHERE T2.Id IS NULL; 
于 2013-02-06T12:57:48.603 回答
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

其他替代方法是LEFT JOIN按照@HamletHakobyan的回答NOT EXISTS.

于 2013-02-06T12:58:57.787 回答
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));
于 2013-02-06T12:57:48.480 回答