티스토리 뷰

DB

MYSQL - WITH 구문

까오기 2023. 7. 19. 16:06

MySQL에서 WITH 구문은 Common Table Expression(CTE)를 사용하여 서브쿼리를 정의하고 재사용할 수 있는 기능을 제공합니다. WITH 구문을 사용하면 가독성이 향상되고, 복잡한 쿼리를 더 간단하게 작성할 수 있습니다. WITH 구문을 사용하는 기본적인 형식은 다음과 같습니다:

WITH cte_name (column1, column2, ...) AS (
    -- 서브쿼리 정의
)
-- 메인 쿼리에서 cte_name 사용 가능

여기서 cte_name은 Common Table Expression의 이름을 나타냅니다. 괄호 안의 column1, column2, ... 부분은 CTE에서 반환하는 열(column)들을 정의합니다. 그리고 AS 뒤에 오는 부분은 실제로 CTE에 대한 서브쿼리를 정의합니다.

CTE를 사용하는 예시를 살펴보겠습니다.

예시 1: CTE를 사용하여 간단한 쿼리 작성

WWITH popular_products AS (
    SELECT product_id, product_name, price
    FROM products
    WHERE sales_count > 1000
)
SELECT *
FROM popular_products;

위의 예시에서 popular_products라는 CTE를 정의하여 products 테이블에서 sales_count가 1000 이상인 인기 상품들을 선택합니다. 그리고 메인 쿼리에서 popular_products CTE를 사용하여 인기 상품들을 출력합니다.

예시 2: CTE를 활용하여 서브쿼리를 재사용

WITH top_customers AS (
    SELECT customer_id, COUNT(*) as total_orders
    FROM orders
    GROUP BY customer_id
    ORDER BY total_orders DESC
    LIMIT 5
)
SELECT c.customer_id, c.customer_name, t.total_orders
FROM customers c
JOIN top_customers t ON c.customer_id = t.customer_id;

위의 예시에서 top_customers라는 CTE를 정의하여 가장 많은 주문을 한 상위 5명의 고객들을 선택합니다. 그리고 메인 쿼리에서 top_customers CTE를 사용하여 해당 고객들의 정보를 출력합니다.

CTE를 사용하면 중복된 서브쿼리를 피하고 가독성을 높일 수 있으며, 코드를 더 간결하게 작성할 수 있습니다. 하지만 CTE를 사용할 때에는 메인 쿼리와 CTE 간의 관계와 순서를 주의해야 합니다. 또한, CTE는 메인 쿼리 내에서만 사용 가능하며 다른 쿼리에서는 사용할 수 없습니다.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함