[SQL] MySQL With 절 사용법

Kim Hyen Su·2024년 7월 25일

SQL

목록 보기
7/15
post-thumbnail

개요

프로그래머스 SQL 고득점 kit를 풀던 중 MySQL에 WITH 절에 대한 부분이 문제에 필요하여 찾아보게되었고, 해당 내용에 대해서 처음 알게되어 포스팅을 작성하였습니다.

📜 공식 문서

WITH 절

서브쿼리를 미리 만들어 놓고 재사용이 가능한 임시 데이터 SET을 생성하기 위해 사용되는 공통 테이블 표현식(CTE, Common Table Excepression)입니다.

WITH 절을 사용함으로써, 쿼리 자체를 단순화하고 가독성을 높일 수 있다는 장점이 있습니다.

기본 표현

WITH [cte_name] AS (
   SELECT [column_name(s)]
   FROM [table_name]
   WHERE [condition]
)
SELECT [column_name(s)]
FROM [table_name]
JOIN [cte_name] ON [join_condition]
WHERE [condition];

위에서 cte_name은 별칭으로 서브쿼리에서 반환된 결과를 참조하는 임시 테이블명입니다.

서브쿼리 내에서 SELECT문을 사용하여 데이터를 검색하고, 해당 결과 집합을 cte_name으로 정의한 CTE에 저장합니다. 그 다음 CTE를 메인 쿼리에서 참조하여 추가 데이터를 가져올 수 있습니다.

예제

WITH SPECIALIST AS (
	SELECT NAME, CAREER, JOB_TITLE
    FROM EMPLOYEES AS E
    JOIN DEPARTMENTS AS D ON E.DEPARTMENT_ID = D.DEPARTMENT_ID
    WHERE DEPARTMENT_NAME = 'ELECTROMAGNETIC'
)

SELECT NAME, CAREER, JOB_TITLE
FROM SPECIALIST;

위 예제는 부서명이 'ELECTROMAGNETIC'인 모든 직원의 이름, 경력, 직책을 조회하기 위해 SPECIALIST라는 CTE를 정의하였습니다. 이후에 CTE를 메인 쿼리에서 참조하여 결과를 출력해줍니다.

마무리

위처럼 WHEN절은 CTE로 서브쿼리에서 조회된 결과 데이터를 재사용할 수 있어 코드 중복을 줄여주고 가독성을 높여주는데 도움이 됩니다.

profile
백엔드 서버 엔지니어

0개의 댓글