3 WHERE 절의 서브쿼리
① 메인쿼리의 WHERE 절에도 서브쿼리를 사용할 수 있으며, MySQL에서 이러한 서브쿼리를 지칭하는 공식 명칭은 없지만, 이 책에서는 편의상 조건 서브쿼리라고 합니다.
② 조건 서브쿼리는 WHERE 절의 필터 조건에서 비교 값으로도 사용됩니다.
③ WHERE 절의 서브쿼리는 비교 연산자와 ANY, SOME, ALL, IN, EXISTS 연산자와 함께 사용됩니다.
④ 비교 연산자만 사용할 때 조건 서브쿼리는 단일 값을 반환해야 합니다.
⑤ 조건 서브쿼리가 반환하는 건이 여러 개이면 ANY, SOME, ALL 연산자를 비교 연산자와 함께 사용할 수 있습니다.
⑥ ANY와 SOME 연산자를 사용할 때 조건 서브쿼리가 반환하는 여러 건의 값과 비교해 어느 하나라도 조건에 맞으면 해당 데이터가 조회됩니다.
⑦ ALL 연산자를 사용할 때 조건 서브쿼리가 반환하는 여러 건의 값 전체와 비교해 조건에 맞으면 해당 데이터가 조회됩니다.
⑧ IN, EXISTS 연산자는 비교 연산자 없이 단독으로 사용합니다.
⑨ IN 연산자를 사용하면 메인쿼리의 비교 칼럼 값이 조건 서브쿼리가 반환하는 값에 포함되는 건을 모두 조회합니다.
⑩ EXISTS 연산자를 사용하면 메인쿼리의 데이터 중 조건 서브쿼리와의 조인 조건에 부합하는 데이터를 조회하는데, 이때 조인 조건은 서브쿼리 안에 기술합니다.
⑪ IN과 EXISTS 연산자 앞에 NOT을 명시하면 포함되지 않는 건과 존재하지 않는 건만 추출할 수 있습니다.
⑫ 조건 서브쿼리와 EXISTS 연산자를 사용한 조인을 세미조인, NOT EXISTS 연산자를 사용한 조인을 안티조인이라고 합니다.