SQL:仅插入新记录

时间:2014-10-10 15:47:10

标签: mysql sql ms-access-2007

这一定是非常微不足道的,但我似乎无法找到解决方案。

我使用两个表,都没有任何主键。

我想将第一个表的所有记录添加到第二个表中,只要它们不存在。

基本上:

INSERT INTO Table2
SELECT Table1.*
FROM Table
WHERE "the record to be added doesn't already exists in Table2"

3 个答案:

答案 0 :(得分:2)

你可以这样做。您需要检查每个相关的列 - 我刚才输入2作为示例。使用Not Exists子句,您可以检查多个列中是否已存在记录。使用NOT IN,您只能检查是否已存在针对一列的记录。

INSERT INTO Table2
SELECT t1.*
FROM Table1 t1
WHERE NOT EXISTS 
(
      SELECT 1 
      FROM table2 t2 WHERE 
      t2.col1 = t1.col1 AND 
      t2.col2 = t1.col2
) 

答案 1 :(得分:1)

您可以使用EXISTS功能:

INSERT INTO Table2
SELECT Table1.*
FROM Table1
WHERE NOT EXISTS(SELECT * FROM table2 WHERE <your expression to compare the two tables goes here>)

但我会建议你检查你的表的唯一索引的使用

答案 2 :(得分:0)

只是一个想法 - 未经测试:

INSERT INTO Table2
SELECT *
FROM Table1
WHERE NOT EXISTS(SELECT * FROM Table2 WHERE Table2.Field1 = Table1.Field1 AND Table2.Field2 = Table1.Field2)

您必须在NOT EXISTS查询

的WHERE子句中添加两个表的每个Field