【发布时间】:2018-07-04 10:20:53
【问题描述】:
我需要删除存在于目标表中但不存在于源表中的记录。目标表中的主键是源表中不存在的 auto_increment ID。源表和目标表都包含一组唯一键组合,可用于唯一标识任一表中的行。我应该遵循什么方法?如果我要使用多个列组合作为唯一键而不是一个主键(源中没有),我该如何删除?
delete from dest_table
where (uniq_key_col1,uniq_key_col2) not in (
select dest.uniq_key_col1,dest.uniq_key_col2
from dest_table dest
join source_table source
on dest.uniq_key_col1=source.uniq_key_col1
and dest.uniq_key_col2=source.uniq_key_col2
)
这是它的理想外观(只是为了清楚起见,请忽略 where 子句中的错误,因为有多个列)
【问题讨论】:
标签: sql sql-server sql-server-2008