2010-04-27 4 views

답변

50

내가 원하는
result1: 
'a' 
'b' 
'c' 

result2: 
'b' 
'c' 

마이너스 result2에 의해 결과 1의 것과 :

내가 (각각 하나의 열) 결과 집합을 말해봐

result1 - result2를 수행하려면 result1을 result2와 결합하고 result1에있는 항목 만 출력 할 수 있습니다. 세트 차이없고, result2 출력 항목 결과 1에 존재하지 않을 것이다

SELECT DISTINCT result1.column 
FROM result1 LEFT JOIN result2 ON result1.column = result2.column 
WHERE result2.column IS NULL 

참고 : 예를 들어. 뺄셈으로 설정되어 있습니다.

은 참조 : http://www.bitbybit.dk/carsten/blog/?p=71

+0

MySQL을 사용해 본 지 오래되었으므로 설명해 주셔서 감사합니다. –

9

당신은 무엇에 대한 result2에없는 result1에서 물건하려면 다음

SELECT distinct result1 
FROM t1 
WHERE result1 NOT IN (select distinct result2 from t2); 

또는 :

SELECT distinct result 
from t1 t 
where NOT EXISTS (select 1 from t2 where result2 = t.result1) 

참고 : result1이 부분 집합 인 경우 result2이면 위의 쿼리는 빈 집합을 반환합니다 (그들은에 표시하지 않습니다).은 result1이 아니기 때문에 차이가 설정되지는 않았지만 유용 할 수도 있습니다 (아마도 외부 조인보다 효율적입니다).