with절 (가상테이블) 간단 정리

2946 단어 sqlTILTIL

with절

  • 단일문 범위 내에 존재하는 명명된 임시 결과의 집합
  • 나중에 해당 문 내에서 여러번 참조 가능
  • 데이터 베이스에 저장되는 테이블은 아니다

문법 형식

with
      cte1 as (select a, b from table 1),
      cte2 as (select c, d from table 2), ...

select a from cte1
  • 생성 이후 쿼리문에서는 계속 사용 가능하므로 아래와 같은 쿼리도 가능
select b, d from cte1 join cte2
where cte1.a = cte2.c;
  • 메인쿼리에서는 from절에서 서브쿼리 한 개, 혹은 여러 개의 서브쿼리를 조인해 결과를 조회할 수 있다
  • 결국, 메인쿼리에서 쓸 서브쿼리를 미리 with절에 기술해주는 것이라고 생각하면 쉽다
-- 예시쿼리
with dept as 
	(select department_id, department_name, dept_name
    from departments) -- 임시 테이블 생성

select a.employee_id as em_id,
	a.first_name||' '||a.lastname as name
from employees as a, dept b
where a.department_id = b.department_id;

참고문서
MySQL docs

좋은 웹페이지 즐겨찾기