【发布时间】:2017-10-03 20:28:03
【问题描述】:
您好,我无法弄清楚如何将不重复的行从一个表插入到另一个表中,我想到了这样的事情
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]);
当然这只是一个例子,我使用了更多的列和数据
编辑:不是重复的,因为提供的解决方案与整个表格匹配
【问题讨论】:
-
我使用的是 sql server 2012
-
@SeanLange 啊,我以为我是通过 MySQL 标签找到的。
-
您可能想查看这个帖子,您的问题似乎已经得到解答:stackoverflow.com/questions/656012/…
-
感谢您的回复,但这些都不适用于我的情况,我通过 MERGE 找到了解决方案
标签: sql sql-server tsql sql-insert