从SQL Server 2008 R2中的实际数据库表中删除非重复行

时间:2015-04-03 10:25:52

标签: sql-server-2008-r2

我有一个表变量@Temp和一个数据库表Master

这是两个表中的样本数据:

@Temp

EMPID      ID
1           1
1           3
2           2
2           3

Master

EMPID     ID
1          1
1          2
1          3
2          1
2          2
2          3
3          1
3          2

现在我必须从Master表中删除一对EMPID& ID与@temp表不匹配。它应该删除2行(@Temp表中不存在该对)。我还想保留@Temp表中不存在EMPID的记录。删除记录后,我的主表应该有以下记录。

输出

Master

EMPID      ID

1          1
1          3
2          2
2          3
3          1
3          2

1 个答案:

答案 0 :(得分:0)

你可以试试这个

DELETE FROM Master WHERE EMPID IN (SELECT EMPID FROM @Temp) AND NOT EXISTS 
(SELECT 1 FROM @Temp WHERE EMPID=Master.EMPID AND ID = Master.ID) 

如果有帮助,请将其标记为答案