With 절이란?
복잡한 쿼리를 작성하다 보면, 비슷한 쿼리를 여러 번 사용해야 할 때가 있다. 매번 똑같은 쿼리를 사용하면 실행 시간이 계속 늘어날 것 같고, 한 번만 실행하고 싶을 때가 있을 것이다.
이럴 때 필요한 것이 with
절이다. with 절은 select 쿼리를 실행하고 해당 결과를 임시로 저장해준다. 이러한 것들은 CTE(common table expression)
라고 한다.
사용법
테이블 구조
create table user(
id integer not null primary key,
name varchar(8) not null,
locale varchar(8) not null
)
select 쿼리
with temp_user as (
select *
from user
where name like "fhdu%"
)
select *
from temp_user u1
left join temp_user u2
on u1.locale = u2.locale
temp_user에 결과를 저장해놓고 계속 불러와서 쓸 수 있게 도와준다.
with 절 여러 개 사용
with temp_user as (
select *
from user
where name like "fhdu%"
), temp_user2 as (
select *
from user
where name like "woo%"
)
select *
from temp_user u1
left join temp_user2 u2
on u1.locale = u2.locale
위와 같이 ,
기호로 하나의 쿼리에서 여러 개의 with 절을 사용할 수 있다.