다른 쿼리를 살펴봅시다.
코드 9-24
SELECT ranks, movie_name, release_date, sale_amt, rep_country
FROM box_office
WHERE YEAR(release_date) = 2019
AND ranks BETWEEN 1 AND 100
AND rep_country NOT IN (SELECT rep_country
FROM box_office
WHERE YEAR(release_date) = 2018
AND ranks BETWEEN 1 AND 100);
실행결과
코드 9-24의 조건 서브쿼리를 보면 2018년에 개봉한 영화 중에서 상위 100개 영화의 대표 국가(rep_country)를 조회합니다. 마찬가지로 메인쿼리에서는 2019년에 개봉한 영화 중 100위까지 영화를 조회합니다. 메인쿼리의 WHERE 절에서는 2019년 개봉 영화의 대표 국가가 서브쿼리가 반환하는 대표 국가에 포함되지 않는 건을 비교하려고 NOT IN 연산자를 사용했습니다. 조건에 해당하는 건을 조회할 때 IN 연산자를 사용하듯이, 조건에 해당되지 않는 건을 조회할 때는 NOT IN 연산자를 사용합니다.
결과를 보면 1편의 영화가 조회됐는데, 이 영화의 대표 국가는 대만입니다. 2018년 영화 100위까지에는 대만 영화가 없지만, 2019년에는 100위 안(78위)에 대만 영화 1편이 들어 있음을 확인할 수 있습니다.