Not in 을 쓰려는데 예상과는 다른 결과가 나와서 질문 드립니다.
테이블은 T1과 T2가 있습니다.
두 테이블은 컬럼이 동일 합니다.
컬럼명은 gurl 이며 varchar(100) 입니다.
T1의 gurl에는 값이 있지만 T2의 gurl에는 해당 값이 없는 gurl을 뽑고자 합니다.
1. not in을 사용 했을 경우
select gurl from T1 where gurl not in(select gurl from T2) --> 아무 값도 나오지 않습니다.
2. except를 사용 했을 경우
select gurl from T1
except
select gurl from T2 --> 값이 나옵니다.
3. join을 사용 했을 경우
select A.gurl from(select gurl from T1) A
left join (select gurl from T2 ) B on B.gurl = A.gurl
where B.gurl is null
group by A.gurl --> 2번과 동일한 값이 나옵니다.
왜 1번의 not in을 사용했을경우에는 값이 나오지 않는지 도무지 모르겠습니다.
NULL 값때문에 그런거 아닌가요?
https://docs.microsoft.com/ko-kr/sql/t-sql/language-elements/in-transact-sql?view=sql-server-2017