2012-11-19 2 views
1
drop table #temp1 
drop table #temp2 

create table #temp1 (id int identity, A int, B int) 
create table #temp2 (id int identity, A int, B int) 

insert into #temp1 values (20, 1001) 
insert into #temp1 values (20, 1001) 
insert into #temp1 values (30, 1001) 

insert into #temp2 values (20, 1001) 

SQL을 사용하여 # temp1의 두 번째와 세 번째 행이 # temp2에 없음을 알아야합니다.두 테이블의 데이터 비교

찾는 방법은 무엇입니까?

SELECT id, a, b 
FROM #temp1 

EXCEPT 

SELECT id, a, b 
FROM #temp2 ; 

당신은 뭔가 매우 심각한 불구하고 고려해야합니다 :

+0

어떤 DBMS를 사용하고 있습니까? –

답변

0

당신은 EXCEPT 연산자를 사용할 수 있습니다. id 열은 숫자를 자동으로 가져 오므로 값이 없습니다. 실제 예에서는 (a, b) 열 또는 PRIMARY KEY으로 정의 된 다른 조합에 UNIQUE 제약 조건이있을 수 있습니다. 따라서 위의 예는 유효하지 않습니다. table1에 첫 번째와 세 번째 행만 삽입됩니다. 2 위는 1 위와 동일하게 거부됩니다.

+0

@Mark : 아니요, 유효한 포인트가 있습니다. 나는 처음에는 '선택 a, b'를 보았지만 실제로는 그 숫자를 보지 않았습니다. –