다음 ㉠과 ㉡의 결과 값을 순서대로 나열한 것은?[회원]회원번호이름1서… | [SQLD] SQL 개발자 기출유형 모의고사 3회 상세 페이지

1[SQLD] SQL 개발자 기출유형 모의고사 3회
다음 ㉠과 ㉡의 결과 값을 순서대로 나열한 것은?

[회원]

회원번호이름
1서하
2민재
3유나
4태윤
5지오

[게시글]

글번호작성자번호제목
111가입 인사
121질문
133후기
14(null)탈퇴회원 글
154공지 문의

㉠

SELECT COUNT(*) FROM 회원
 WHERE 회원번호 NOT IN (SELECT 작성자번호 FROM 게시글);

㉡

SELECT COUNT(*) FROM 회원 M
 WHERE NOT EXISTS (SELECT 1 FROM 게시글 P
                    WHERE P.작성자번호 = M.회원번호);
1
0, 2
2
2, 2
3
2, 0
4
1, 2
해설

㉠은 서브쿼리 결과에 NULL 이 섞여 NOT IN 비교가 어떤 회원에서도 참이 되지 못해 0이고, ㉡의 NOT EXISTS 는 NULL 과 무관하게 글이 없는 민재·지오를 세어 2이다.

x NOT IN (1, 3, NULL, 4) 는 x <> NULL 비교가 UNKNOWN 이므로 결과가 참이 될 수 없다.

  • ㉠을 2로 본 것은 NULL 행을 무시한다고 착각한 경우이다.
  • ㉡을 0으로 본 것은 NOT EXISTS 도 NULL 에 영향받는다고 본 경우이다.
  • ㉠을 1로 볼 근거는 없으며, NULL 하나가 전체 비교를 막는다.

오류나 개정된 내용이 보이면 알려주세요

이어서 풀어보기

[SQLD] SQL 개발자 기출유형 모의고사 3회 50문항 이어서 보기문제·정답·해설을 한 페이지에서 이어서 볼 수 있어요SQLD SQL 개발자 실전 모의고사 암기장 전체 보기