NOT EXISTS 연관 질문입니다ㅜㅜ 도와주세요.... 0 2 654

by DB_SQL [Oracle 기초] [2020.11.13 20:47:30]


SAILOR.PNG (5,916Bytes)

안녕하세요? 제가 한 문제를 보다가 결과가 도저히 이해가 안되어서 질문을 드립니다..

비교 연산에 NULL값이 포함되어 있어서 너무 헷갈리네요ㅜㅜ...

고수님들 도와주세요 ㅠㅠ....

SAILOR TABLE은 아래와 같고, QUERY는 다음과 같습니다.

SELECT S.SNAME FROM SAILOR S WHERE NOT EXISTS
(SELECT * FROM SAILOR S2 WHERE S2.AGE<40 AND S.RATING<=S2.RATING);

결과는 

BB

AA

CC

입니다...

 

by 마농 [2020.11.16 09:04:46]

NULL 은 비교 자체가 불가하기 때문에 비교연산에서 NULL 사용시 결과는 항상 거짓입니다.
JJ 4 의 경우 4보다 크거나 같은 4,5,6 중에 40 미만인 30 존재하므로 대상에서 제외
BB 5 의 경우 5보다 크거나 같은 5,6 중에 40 미만인 값이 존재하지 않으므로 대상에 포함
AA 6 의 경우 6보다 크거나 같은 6 중에 40 미만인 값이 존재하지 않으므로 대상에 포함
CC null 의 경우 null 보다 크거나 같은 건 존재하지 않으므로 대상에 포함


by DB_SQL [2020.11.18 21:58:23]

감사합니다^^!

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입