[Mybatis] 서브 쿼리를 사용하여 복잡한 쿼리를 작성 하는 방법과 예제

서브 쿼리를 사용하여 복잡한 쿼리를 작성하는 것은 데이터베이스에서 특정 조건에 따라 부속 쿼리를 수행하고 그 결과를 기반으로 주 쿼리를 실행하는 방법입니다. 서브 쿼리는 다양한 상황에서 사용되며, MyBatis를 통해 SQL 쿼리로 구현할 수 있습니다.

예제: 서브 쿼리 사용

다음 예제에서는 서브 쿼리를 사용하여 주문(order) 테이블에서 특정 상품(product)의 주문 수를 조회하는 쿼리를 작성합니다.

<select id="getOrderCountForProduct" resultType="int">
    SELECT COUNT(*) FROM orders
    WHERE product_id = (
        SELECT id FROM products
        WHERE product_name = #{productName}
    )
</select>` 

이 예제에서는 다음과 같은 작업을 수행합니다:

  1. getOrderCountForProduct 쿼리에서는 orders 테이블에서 주문 수를 계산합니다.

  2. 주문의 상품(product_id)과 서브 쿼리에서 선택한 특정 상품의 ID(id)를 비교하여 필터링합니다.

  3. 서브 쿼리에서는 products 테이블에서 productName과 일치하는 상품의 ID(id)를 찾습니다.

이런 방식으로 서브 쿼리를 사용하여 주 쿼리의 조건을 동적으로 설정하거나 복잡한 필터링을 수행할 수 있습니다. MyBatis는 서브 쿼리를 작성하는 데 일반 SQL과 동일한 방식을 사용하므로 SQL을 잘 이해하고 있으면 쉽게 활용할 수 있습니다.