SQLDSQL 활용IN EXISTS난이도 3MCQ

SQLD IN EXISTS 기출문제 #3836

문제

아래 SQL과 같은 결과를 반환하는 SQL로 가장 적절한 것은?

SQL
SELECT * FROM A WHERE 번호 IN ( SELECT 번호 FROM B WHERE A.성별 = B.성별 );

① SELECT * FROM A WHERE EXISTS (SELECT 1 FROM B WHERE A.성별 = B.성별 AND A.번호 = B.번호) ② SELECT * FROM A JOIN B ON A.성별 = B.성별 ③ SELECT * FROM A WHERE A.성별 IN (SELECT B.성별 FROM B WHERE A.번호 = B.번호) ④ SELECT * FROM A WHERE 번호 = ALL (SELECT 번호 FROM B WHERE A.성별 = B.성별)

정답

1

해설

정답: 1. 원 SQL은 같은 성별의 B 행 중 A.번호와 같은 번호가 존재하는지 확인하므로 EXISTS에 성별과 번호 조건을 모두 넣은 1번과 같은 의미이다.

오답 풀이

  • 1번: IN 조건을 EXISTS로 올바르게 변환한 형태이다.
  • 2번: 성별만 같으면 조인되어 번호 조건이 빠진다.
  • 3번: 성별 IN 조건으로 바뀌어 원문의 번호 포함 여부와 다르다.
  • 4번: ALL은 서브쿼리의 모든 번호와 같아야 하므로 의미가 다르다.

보충 개념 IN은 값이 서브쿼리 결과 집합에 포함되는지 확인한다. EXISTS로 바꿀 때는 동일한 비교 조건을 상관 조건으로 명확히 작성해야 한다.

SQLD 시험 준비 가이드

이런 문제 20~50개를 한 번에 풀어보세요

매번 새로 추가되는 모의고사 + 오답 자동 복습 + 회차별 실력 추적. 회원가입 후 무료 이용.

[SQLD] IN EXISTS SQL 활용 기출 #3836 | 문어CBT