더북(TheBook)

코드 9-25

SELECT ranks, movie_name, director
  FROM box_office a
 WHERE YEAR(release_date) = 2019
   AND EXISTS (SELECT 1
                 FROM box_office b
                WHERE YEAR(release_date) = 2018
                  AND a.movie_name = b.movie_name);

실행결과

코드 9-25는 코드 9-22에서 IN 연산자 대신 EXISTS 연산자를 사용하도록 변경한 쿼리입니다. 코드 9-25에는 메인쿼리의 WHERE 절에 비교하려는 칼럼이 없고 EXISTS 연산자만 있습니다. 그리고 조건 서브쿼리의 WHERE 절에 메인쿼리의 테이블과 서브쿼리의 테이블에 대한 조인 조건 절이 있습니다. 여기서는 2018년 개봉 영화(서브쿼리)와 2019년 개봉 영화(메인쿼리)의 제목이 같은 건을 확인하는 조건을 주었죠. 따라서 이 쿼리 역시 2018년에 개봉해 2019년에도 여전히 상영 중인 영화를 제목으로만 비교하므로 IN 연산자를 사용한 쿼리와 결과가 같습니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.