[sql] 서브쿼리에서 WITH 절의 사용 방법

서브쿼리(subquery)는 SQL 문 내에 포함된 중첩된 쿼리이며, WITH 절은 서브쿼리에서 중복되는 부분을 효율적으로 정의하는 데 사용됩니다. 이 글에서는 SQL 서브쿼리에서 WITH 절의 사용 방법에 대해 알아보겠습니다.

WITH 절의 개요

WITH 절은 서브쿼리에서 중복되는 쿼리나 서브쿼리 결과를 재사용하기 위해 사용됩니다. 이를 통해 코드를 더 읽기 쉽고 유지보수하기 좋게 만들 수 있습니다. WITH 절은 다음과 같은 구조로 작성됩니다.

WITH 
    subquery_name AS (subquery_definition),
    another_subquery_name AS (another_subquery_definition),
    ...

WITH 절의 예제

예를 들어, 주문(order) 테이블과 주문 상세(order_detail) 테이블이 있다고 가정해봅시다. 주문이 발생할 때마다 새로운 주문 번호가 생성되고, 각 주문은 여러 개의 주문 상세를 가질 수 있습니다. 이때 WITH 절을 사용하여 특정 주문 번호(order_id)에 대한 주문 및 주문 상세 정보를 가져오는 쿼리를 작성해보겠습니다.

WITH order_info AS (
    SELECT * 
    FROM orders 
    WHERE order_id = 123
),
order_detail_info AS (
    SELECT * 
    FROM order_details 
    WHERE order_id = 123
)
SELECT * 
FROM order_info 
JOIN order_detail_info ON order_info.order_id = order_detail_info.order_id;

위 예제에서, order_infoorder_detail_info는 각각 주문 정보와 주문 상세 정보를 나타내는 서브쿼리의 이름입니다. 이를 이용하여 후속 쿼리에서 재사용됩니다. 따라서, 동일한 서브쿼리를 여러 번 반복하는 것을 방지할 수 있습니다.

이처럼 WITH 절을 사용하면 서브쿼리를 효율적으로 정의하고 재사용할 수 있으므로, 코드의 가독성과 유지보수성을 향상시킬 수 있습니다.

참고 자료: