더북(TheBook)

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 연산자를 사용한 조인을 안티조인이라고 합니다.