2016-11-15 147 views
0

我有2个服务器2009和2012服务器。我已经将2012年服务器数据中的数据插入到新的登台表中,现在我必须将2009年服务器数据插入到相同的登台表中。如果2009年的数据记录与现有记录相匹配,那么我不想插入该记录,并将所有其他数据放入分期中。删除插入目标表中已有的新记录

+0

[如何避免SQL Server中INSERT INTO SELECT查询中出现重复?](http://stackoverflow.com/questions/2513174/how-to-avoid-duplicates-in-insert-into-select- query-in-sql-server) –

回答

0

创建Server 2008的链接服务器写一个OPENQUERY访问服务器2008台。

现在使用SSIS的执行SQL任务并使用SQL Server 2008表,但服务器2012表除外。

+0

感谢User2799436,Bhosale先生和Sérgio。我创建了一个链接服务器并使用了EST任务并使用了您发布的上述查询。 –

1

试试下面的查询

使用NOT EXISTS

INSERT INTO TABLE_2 
    (id, name) 
SELECT t1.id, 
     t1.name 
    FROM TABLE_1 t1 
WHERE NOT EXISTS(SELECT id 
        FROM TABLE_2 t2 
        WHERE t2.id = t1.id) 

使用NOT IN

INSERT INTO TABLE_2 
    (id, name) 
SELECT t1.id, 
     t1.name 
    FROM TABLE_1 t1 
WHERE t1.id NOT IN (SELECT id 
         FROM TABLE_2) 
0

只是为了使用给出了答案替代连接,而不是退出:

INSERT INTO TABLE_2 
    (id, name) 
SELECT t1.id, 
     t1.name 
    FROM TABLE_1 t1 LEFT JOIN TABLE_2 t2 ON t1.id = t2.id 
where t2.id = null 

当多个登台表或“互补”表(添加来自其他表的连接数据)时,这可以更容易阅读。

问候,
塞尔吉奥