테스트 환경 : Oracle 9i

아래와 같은 쿼리가 있다.

SELECT * FROM TMP1
WHERE PAT_NO NOT IN (SELECT PAT_NO FROM TMP2)
;



결과가 안나온다.

분명히 TMP1에는 있고 TMP2에는 없는 PAT_NO가 있는데...


쿼리를 바꿔보았다.



SELECT A.* FROM TMP1 A
WHERE NOT EXISTS (SELECT 1 FROM TMP2 WHERE PAT_NO = A.PAT_NO)
;


PAT_NO가 NULL인것 까지 몽땅 나온다. 췟..

SELECT A.* FROM TMP1 A
WHERE NOT EXISTS (SELECT 1 FROM TMP2 WHERE PAT_NO = A.PAT_NO)
    AND A.PAT_NO IS NOT NULL
;


원하는 결과가 나왔다.


혹시나 하는 맘에 첫번재 쿼리를 바꿔보았다.



SELECT A.* FROM TMP1 A
WHERE NOT EXISTS (SELECT 1 FROM TMP2 WHERE PAT_NO = A.PAT_NO WHERE PAT_NO IS NOT NULL)
;


결과가 나온다... 젠장...


뭐가 다른지 잘 모르겠다. 쩝...

+ Recent posts