본문 바로가기

Web/DB

[mysql] with 절(가상테이블) 01

728x90
더보기

 

WITH(임시 테이블)

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

 

동일한 SQL 반복 시 성능을 높일 때 사용

 

실제 temp 라는 임시 테이블에 저장이 됨

 

 

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

select a from cte1

 

WITH TEMP_TABLE as 
(
    SELECT NAME, count(NAME) 
    FROM ANIMAL_INS
    WHERE NAME IS NOT NULL
    GROUP BY NAME
    ORDER BY NAME
)

SELECT * FROM TEMP_TABLE
WHERE COUNT > 1

 

 

생성 이후에 쿼리문에서 계속 사용이 가능하다

 

 

with 임시 테이블이 생성된 후에는 

 

이렇게 쿼리도 가능하다

select b, d from cte1 join cte2
where cte1.a = cte2.c;

 

 

 

 

-- 예시쿼리
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;

 

 

 

 

728x90