문제
다음 중 상관 서브쿼리를 독립 서브쿼리로 변환할 때 가장 적절한 방법은?
SQL-- 원본 쿼리 SELECT 고객명 FROM 고객 A WHERE EXISTS ( SELECT 1 FROM 주문 B WHERE A.고객ID = B.고객ID AND B.주문일자 >= '2024-01-01' );
① SELECT 고객명 FROM 고객 WHERE 고객ID IN (SELECT 고객ID FROM 주문) ② SELECT 고객명 FROM 고객 WHERE 고객ID IN (SELECT 고객ID FROM 주문 WHERE 주문일자 >= '2024-01-01') ③ SELECT 고객명 FROM 고객 A, 주문 B WHERE A.고객ID = B.고객ID ④ SELECT 고객명 FROM 고객 WHERE EXISTS (SELECT 1 FROM 주문 WHERE 주문일자 >= '2024-01-01')
정답
2번
해설
②번이 정답입니다. 상관 서브쿼리를 독립 서브쿼리로 변환할 때는 외부 테이블과의 연결 조건(A.고객ID = B.고객ID)을 제거하고, 서브쿼리 내의 모든 조건(주문일자 >= '2024-01-01')을 유지해야 합니다. ①번은 날짜 조건이 누락되었고, ③번은 JOIN 방식이며, ④번은 여전히 상관관계가 제거되지 않았습니다.