Microsoft는 SQL 테이블간에 a tool to compare data을 릴리스했습니다. 이는 특정 상황에서 좋은 옵션 일 수 있습니다.
편집 : 누락되었거나 다른 행을 삽입/업데이트하는 스크립트를 생성합니다.
완벽을 기하기 위해 원하는 쿼리를 해킹하여 기존 table2 레코드를 업데이트하고 누락 된 쿼리를 전자 메일 주소를 기반으로 추가합니다.
아래의 'updating'및 'missing missing'쿼리는 원하는 것입니다.
BEGIN TRAN
create table #table1 (id int, fname varchar(20), email varchar(20))
insert into #table1 values (1, 'name_1_updated', 'email_1')
insert into #table1 values (3, 'name_3_updated', 'email_3')
insert into #table1 values (100, 'name_100', 'email_100')
create table #table2 (id int, fname varchar(20), email varchar(20))
insert into #table2 values (1, 'name_1', 'email_1')
insert into #table2 values (2, 'name_2', 'email_2')
insert into #table2 values (3, 'name_3', 'email_3')
insert into #table2 values (4, 'name_4', 'email_4')
print 'before update'
select * from #table2
print 'updating'
update #table2
set #table2.fname = t1.fname
from #table1 t1
where t1.email = #table2.email
print 'insert missing'
insert into #table2
select * from #table1
where #table1.email not in (select email from #table2 where email = #table1.email)
print 'after update'
select * from #table2
drop table #table1
drop table #table2
ROLLBACK
+1 좋은 솔루션입니다. –
정확히 머지 (MERGE)가 설계된 기능입니다 (일부 분야에서는 INSERT/UPDATE 이상을 처리하더라도이 "UPSERT"라고합니다). –