[sql] 서브쿼리를 사용한 데이터 필터링

일부 쿼리에는 외부 쿼리의 결과를 기반으로 내부 쿼리를 실행하는 서브쿼리(subquery) 가 필요합니다. 서브쿼리를 사용하면 복잡한 조건을 만족하는 데이터를 필터링할 수 있습니다. 경우에 따라 서브쿼리 와 조인을 대체하여 사용할 수도 있습니다. 이 글에서는 서브쿼리를 사용하여 데이터 필터링하는 방법을 알아보겠습니다.

단일 행 서브쿼리

서브쿼리 를 사용하여 단일 행을 반환하는 예시를 살펴보겠습니다. 아래는 employees 테이블에서 최고 급여를 받는 직원의 이름과 급여를 조회하는 예시입니다.

SELECT employee_name, salary
FROM employees
WHERE salary = (SELECT MAX(salary) FROM employees);

쿼리 에서, 외부 쿼리는 employees 테이블에서 직원의 이름과 급여를 선택하고, 내부 쿼리는 employees 테이블에서 가장 높은 급여를 조회합니다. 내부 쿼리의 결과는 외부 쿼리의 조건에 사용되어 결과 집합을 필터링합니다.

다중 행 서브쿼리

이제 서브쿼리 가 다중 행을 반환하는 경우에 대해 알아봅시다. 아래는 orders 테이블에서 최근 주문한 고객의 주문 수를 조회하는 예시입니다.

SELECT customer_id
FROM orders
WHERE order_date = (SELECT MAX(order_date) FROM orders);

쿼리 에서, 내부 쿼리는 orders 테이블에서 가장 최근 주문일자를 찾습니다. 이후 외부 쿼리는 내부 쿼리의 결과를 활용하여 해당 주문일자에 주문한 고객을 반환합니다.

서브쿼리를 활용한 데이터 필터링

서브쿼리를 활용하면 복잡한 필터링을 간단하게 할 수 있습니다. 다양한 상황에서 서브쿼리 를 유연하게 활용하여 데이터를 필터링할 수 있습니다. 이를 통해 데이터베이스 쿼리의 효율성을 높일 수 있습니다.


참고 자료: