더북(TheBook)

9.3.1 조건 서브쿼리

WHERE 절에는 특정 데이터를 걸러 내기 위한 일반 조건이나 조회 조건을 기술합니다. 따라서 서브쿼리를 WHERE 절에서 사용한다는 것은 서브쿼리가 조건 절의 일부라는 뜻입니다. 이를 이용해 서브쿼리가 반환하는 값을 메인쿼리와 비교해서 조건을 확인할 때 사용할 수 있습니다.

WHERE 절에서 사용하는 서브쿼리는 조인 조건보다는 필터 조건에 사용합니다. 필터 조건은 메인쿼리의 FROM 절에 있는 테이블에서 특정 조건을 만족하는 데이터를 조회할 때 이 조건을 만족하는 데이터를 골라내는 용도죠. WHERE 절에서 테이블의 특정 칼럼끼리 값을 비교할 때는 비교 대상 칼럼, 비교 연산자, 비교 값이 필요합니다. 이때 서브쿼리는 비교 값으로 사용합니다. 따라서 비교 값이 올 자리에 서브쿼리를 넣으면 됩니다. 스칼라 서브쿼리나 파생 테이블과 달리, MySQL에서 WHERE 절에 사용하는 서브쿼리를 의미하는 별도의 명칭이 없습니다. 하지만 WHERE 절의 서브쿼리는 조건을 확인하는 용도이므로 이 책에서는 조건 서브쿼리라고 하겠습니다.

메인쿼리의 WHERE 절에서 조건 서브쿼리는 앞에서 배운 비교 연산자 중 =, >, >=, <, <=, !=, <>와 같이 사용할 수 있습니다. 이외에도 IN, EXISTS, ANY, SOME, ALL 같은 연산자를 사용할 수 있습니다. 그리고 어떤 연산자를 사용하느냐에 따라 조건 서브쿼리를 사용하는 구문이 조금씩 달라집니다.

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