데이터베이스 개발자 질문과 답변 게시판
데이터베이스 개발/운영 관련 질문과 답변을 올리는 게시판입니다. 궁금하신 내용을 이곳에서 문의하시면 SQLER 분들의 답변을 받으실 수 있습니다. 문의를 하실때에는 최근 작업하신 특이 사항이나, 장애 발생 전 상황을 상세히 올려 주시면 답글을 적어주시는 SQLER분들의 답변이 더 정확할 수 있으니 도움 되시길 바랍니다. 쿼리 문의일 경우, 실제 문제가 재현되는 테이블생성, 샘플데이터 생성 쿼리를 함께 올려 주시면 더 빠르고 정확한 쿼리 문의 응답이 가능합니다.
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