문제
다음 EXISTS를 IN으로 변환한 것으로 가장 적절한 것은?
SQLSELECT 이름 FROM 학생 A WHERE EXISTS (SELECT 1 FROM 수강 B WHERE A.학번=B.학번 AND B.과목='데이터베이스');
① WHERE 학번 IN (SELECT 학번 FROM 수강) ② WHERE 학번 IN (SELECT 학번 FROM 수강 WHERE 과목='데이터베이스') ③ WHERE EXISTS (SELECT 학번 FROM 수강 WHERE 과목='데이터베이스') ④ WHERE 학번 IN (SELECT 1 FROM 수강 WHERE 과목='데이터베이스')
정답
2번
해설
②가 정답입니다. EXISTS를 IN으로 변환할 때는 연결 조건(A.학번=B.학번)을 IN의 서브쿼리에서 SELECT 항목으로 사용하고, 원래 조건(과목='데이터베이스')도 WHERE절에 포함해야 합니다. ①은 과목 조건이 누락되었고, ③은 여전히 EXISTS를 사용하며, ④는 SELECT 1을 잘못 사용했습니다.