从另一个表格中复制数据,这些表格在第一个表格中不存在。

时间:2013-02-06 12:55:02

标签: mysql sql insert

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

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

3 个答案:

答案 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 answerLEFT 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));