본문 바로가기

플밍 is 뭔들/DB

NOT IN의 함정... 조건은 맞는데 데이터가 안나올때..

문제의 쿼리...

SELECT * FROM TABLE_NAME
WHERE UPPER_CODE NOT IN (
     SELECT UPPER_CODE FROM TABLE_NAME
)

이런식으로 두 UPPER_CODE라는 항목을 비교했는데 데이터를 일일이 비교해보고 
조건이 맞는데도 IN은 정상적으로 데이터가 나오는데 NOT IN 은 정상적으로 데이터가 나오지 않는것이었다. (아애 데이터가 나오지 않았다)

왜그런고 하니 NOTIN 괄호 안에 결과값에 NULL이 있었기 때문이다...

SELECT * FROM TABLE_NAME
WHERE UPPER_CODE NOT IN (
     SELECT UPPER_CODE FROM TABLE_NAME WHERE UPPER_CODE IS NOT NULL
)

그래서 결국은 위와 같이 IS NOT NULL을 조건을 주어 해결!