[sql] 서브쿼리에서의 데이터 조회 방법

서브쿼리(subquery)는 다른 쿼리 안에 포함된 쿼리를 말합니다. 서브쿼리를 사용하면 한 번의 쿼리 실행으로 여러 테이블 간의 연관된 데이터를 조회할 수 있습니다. 여기서는 서브쿼리를 사용하여 데이터를 조회하는 방법을 알아보겠습니다.

단일 행 서브쿼리

단일 행 서브쿼리는 결과로 하나의 행을 반환하는 서브쿼리입니다. 이 방법은 => 와 같은 비교 연산자와 함께 사용됩니다.

예를 들어, employees 테이블과 salaries 테이블이 있을 때, 직원의 연봉(salary)이 평균 연봉보다 높은 경우에 해당하는 데이터를 조회하기 위해 단일 행 서브쿼리를 사용할 수 있습니다.

SELECT *
FROM employees
WHERE salary > (SELECT AVG(salary) FROM salaries);

이 쿼리는 salaries 테이블에서 연봉의 평균을 계산하여 그 값과 비교하여 결과를 반환합니다.

다중 행 서브쿼리

다중 행 서브쿼리는 여러 행을 반환하는 서브쿼리입니다. IN, ANY, ALL과 같은 비교 연산자와 함께 사용됩니다.

예를 들어, employees 테이블과 departments 테이블이 있을 때, 각 부서(department)별로 직원의 수가 일정 수 이상인 경우에 해당하는 데이터를 조회하기 위해 다중 행 서브쿼리를 사용할 수 있습니다.

SELECT *
FROM departments
WHERE department_id IN (SELECT department_id 
                        FROM employees 
                        GROUP BY department_id 
                        HAVING COUNT(*) > 10);

이 쿼리는 각 부서별 직원 수를 계산하여 일정 수 이상인 경우에 해당하는 결과를 반환합니다.

서브쿼리를 사용하여 데이터를 조회하는 방법에 대해 간략히 살펴보았습니다. 서브쿼리는 복잡한 데이터 조회 요구사항을 간편하게 처리할 수 있는 강력한 도구입니다.

참고: MySQL 공식 문서