您好我无法弄清楚如何将一个表中不重复的行插入到另一个表中,我想到这样的事情
INSERT INTO Table1
SELECT id, name, lastname FROM Table2
WHERE id.Table1 != id.Table2
AND name.Table1 != name.Table2
AND lastname.Table1 != lastname.Table2
如果它已经存在,如何编写指定不插入的条件?
编辑:我忘了提到我只需要匹配某些列,因为这些表包含标识1,1我的解决方案如下:
MERGE Table1 as t1
USING (SELECT name, lastname FROM Table2) AS t2 (name, lastname)
ON t1.[name] = t2.[name] AND t1.[lastname] = t2.[lastname]
WHEN NOT MATCHED
THEN
INSERT (name, lastname) VALUES (t2.[name], t2.[lastname]);
当然这只是一个例子,我使用了更多的列和数据
编辑:不重复,因为所提供的解决方案与整个表格相匹配
答案 0 :(得分:5)
解决此问题的一种方法是使用except
运算符:
INSERT INTO Table1
SELECT id, name, lastname FROM Table2
EXCEPT
SELECT id, name, lastname FROM Table1
答案 1 :(得分:1)
您可以使用NOT EXISTS
。请注意,表格名称始终为 属性名称。
INSERT INTO Table1
SELECT id, name, lastname
FROM Table2
WHERE NOT EXISTS (
SELECT *
FROM Table1
WHERE Table1.id = Table2.id AND
Table1.name = Table2.name AND
Table1.lastname = Table2.lastname
)