这一定是非常微不足道的,但我似乎无法找到解决方案。
我使用两个表,都没有任何主键。
我想将第一个表的所有记录添加到第二个表中,只要它们不存在。
基本上:
INSERT INTO Table2
SELECT Table1.*
FROM Table
WHERE "the record to be added doesn't already exists in Table2"
答案 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