더북(TheBook)

3 WHERE 절의 서브쿼리

① 메인쿼리의 WHERE 절에도 서브쿼리를 사용할 수 있으며, MySQL에서 이러한 서브쿼리를 지칭하는 공식 명칭은 없지만, 이 책에서는 편의상 조건 서브쿼리라고 합니다.

② 조건 서브쿼리는 WHERE 절의 필터 조건에서 비교 값으로도 사용됩니다.

WHERE 절의 서브쿼리는 비교 연산자와 ANY, SOME, ALL, IN, EXISTS 연산자와 함께 사용됩니다.

④ 비교 연산자만 사용할 때 조건 서브쿼리는 단일 값을 반환해야 합니다.

⑤ 조건 서브쿼리가 반환하는 건이 여러 개이면 ANY, SOME, ALL 연산자를 비교 연산자와 함께 사용할 수 있습니다.

ANYSOME 연산자를 사용할 때 조건 서브쿼리가 반환하는 여러 건의 값과 비교해 어느 하나라도 조건에 맞으면 해당 데이터가 조회됩니다.

ALL 연산자를 사용할 때 조건 서브쿼리가 반환하는 여러 건의 값 전체와 비교해 조건에 맞으면 해당 데이터가 조회됩니다.

IN, EXISTS 연산자는 비교 연산자 없이 단독으로 사용합니다.

IN 연산자를 사용하면 메인쿼리의 비교 칼럼 값이 조건 서브쿼리가 반환하는 값에 포함되는 건을 모두 조회합니다.

EXISTS 연산자를 사용하면 메인쿼리의 데이터 중 조건 서브쿼리와의 조인 조건에 부합하는 데이터를 조회하는데, 이때 조인 조건은 서브쿼리 안에 기술합니다.

INEXISTS 연산자 앞에 NOT을 명시하면 포함되지 않는 건과 존재하지 않는 건만 추출할 수 있습니다.

⑫ 조건 서브쿼리와 EXISTS 연산자를 사용한 조인을 세미조인, NOT EXISTS 연산자를 사용한 조인을 안티조인이라고 합니다.

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