2011-11-03 4 views
8

나는 두 가지 간단한 테이블이 : (여기에만 "ID"열)두 SQL 테이블을 비교하고 누락 된 ID를 반환 하시겠습니까?

표 :

id 
1 
2 
3 
4 

표 2 :

id 
2 
4 

SQL 쿼리가 누락 된 두 테이블을 비교해야 " id "를 반환하고 반환 : 1,2

아이디어가 있습니까? :) TY

+0

지금까지 모든 대답은 table1의 ID가 table2에없는 것을 보여줍니다. column2에 빠진 table2의 모든 결과를 반환하는 쿼리가 필요합니까? –

+0

안녕하세요 폴, 아니요 - 한 가지 방법 만 제가 필요한 것입니다. – MilMike

+1

키워드는 '예외'입니다. MySQL은이 작업을 지원하지 않지만 검색시이를 사용하면 작업과 추가 접근법에 대한 많은 결과가 반환됩니다. (이 질문은 수시로 발생합니다.) –

답변

26

피부에 여러 가지 방법이 고양이가 있습니다

SELECT table1.ID 
FROM  table1 
WHERE  table1.ID NOT IN(SELECT table2.ID FROM table2) 

아니면 왼쪽 외부를 사용할 수 있습니다 가입 :

SELECT   table1.ID 
FROM   table1 
LEFT OUTER JOIN table2 ON table1.ID = table2.ID 
WHERE   table2.ID IS NULL 
+0

첫 번째 쿼리에서 테이블 이름 접두사를 사용하여 어떤 ID 필드를 의미하는지 명확히하기를 제안합니다. 그 이유는 확장 한 경우 매우 혼란 스럽기 때문입니다. 후에. – Polynomial

+0

@Polynomial, 동의 및 업데이트 됨. –

+1

년 전. 그러나 여전히 도움이됩니다. 운이 좋은 답을 찾았습니다. D thx –

2
select t1.* 
from table1 t1 
left outer join table2 t2 on t1.id = t2.id 
where t2.id is null 
+1

@Raihan LEFT OUTER가 주어진 T1에 대해 T2에서 "no rows"를 조인 할 수 있기 때문에 (이 방법은 lynchpin입니다). 누락 된 행은 누락 된 행입니다. 누락되었습니다 :-) –

+0

왜 downvote? – RedFilter

1

이 시도 :

SELECT table1.id 
FROM  table1 
WHERE  table1.id NOT IN(SELECT table2.id FROM table2) 
관련 문제