[SQLD/P] WITH

Hyo Kyun Lee·2022년 10월 10일
0

SQLD/P

목록 보기
29/82

1. WITH

재사용할 수 있는 subquery문의 일종으로, 동일한 조건절을 반복적으로 사용할때 활용할 수 있는 키워드이다.

SELECT EMPNO, EMPL_NAME
FROM EMPNO_TABLE et
UNION ALL
SELECT EMPNO, EMPL_NAME
FROM EMPL_NAME_TABLE en

위와 같이 EMPNO_TABLE과 EMPL_NAME_TABLE이 union되어있고, EMPNO와 EMPL_NAME을 SELECT하는 query가 있다고 하자.

만약 EMPNO_TABLE과 EMPL_NAME의 EMP_NATION 속성이 'KOREA'인 결과만 가져오고자 할때 각 FROM절에 WHERE 조건절을 일일이 작성하지 않고도 WITH 키워드를 이용하여 조건절을 삽입할 수 있다.

WITH EMP_UNION AS (
	SELECT EMPNO, EMPL_NAME
	FROM EMPNO_TABLE et
	UNION ALL
	SELECT EMPNO, EMPL_NAME
	FROM EMPL_NAME_TABLE en
)
SELECT * FROM EMP_UNION
WHERE EMP_NATION = 'KOREA'

2. 사용방법

WITH 사용자 테이블 명명 AS (
	SELECT 절
)
SELECT * FROM 사용자 테이블 명명
WHERE 조건절

사용자 테이블 명명으로 정의한 테이블을 또 하나의 테이블화하고, 해당 테이블에 WHERE 조건절을 반영할 수 있다.

3. 유의사항

subQuery를 사용하는 경우는 임시저장을 사용하기 때문에 메모리 및 성능측면에서 좋은 query문은 아니다.

상황, 조건 등에 따라 적합한 조건절이나 키워드를 사용하여 query 문을 구성하는 것이 필요할텐데, 아무래도 많은 시행착오와 경험을 통해 이러한 감을 익히는 것이 중요할 것으로 보인다.

4. 참고자료

WITH 절 - https://royzero.tistory.com/50

0개의 댓글