[PostgreSQL] With ์
with๋ฌธ์ ์ฟผ๋ฆฌ์ ๊ฒฐ๊ณผ๋ฅผ ์์๋ก ๋ฌถ์ด๋ ์ ์๊ฒ ํด์ฃผ๋ ํธ๋ฆฌํ ๊ธฐ๋ฅ์ด๋ค.
์ด๋ฐ๊ฑธ ๊ณตํต ํ
์ด๋ธ ์(Common Table Expression:CTE)์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค.
์ฝ๊ฒ ๋งํด, ๋ค๋ฅธ ์ธ์ด์์ ๋ณ์๋ฅผ ์ ์ธํ๋ ๊ฒ๊ณผ ๋๋ฑํ๋ค.
์ฟผ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ์ผ์ข
์ ๋ณ์๋ก ๋ฌถ์ด๋๊ณ ๊ทธ ์ฟผ๋ฆฌ๊ฐ ๋๋ ๋๊น์ง ์ฌ์ฌ์ฉํ ์ ์๋ ๊ฒ์ด๋ค.
with ์ ์ ์๋์ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๋ค.
WITH
์ด๋ฆ1 AS
(
์ฟผ๋ฆฌ1...
),
์ด๋ฆ2 AS
(
์ฟผ๋ฆฌ2...
)
...
์๋์ ๊ฐ์ด ๋จ์ํ๊ฒ SELECT ๊ฒฐ๊ณผ๋ฅผ ๋ฌถ์ด๋ค๊ฐ ์ฌ์ฉํ ์๋ ์๊ณ

INSERT๋ UPDATE, DELETE์ ๊ฒฐ๊ณผ๋ ๋ฐํ์ ๋ฐ์์ ๋ฌถ์ด๋ ์๊ฐ ์๋ค!
์ด๋ฅผ ์์ฉํ๋ฉด ์์กด๊ด๊ณ๋ฅผ ๊ฐ์ง ์ฌ๋ฌ ํ
์ด๋ธ์ ์์ ์ ๋ณด๋ค ์์ฝ๊ณ ๋น ๋ฅด๊ฒ ์ฒ๋ฆฌํ ์ ์๋ค.
์ ์ฌ์ฉํ๋ค๋ฉด ๊ต์ฅํ ํธ๋ฆฌํ๊ณ ์ข์ ๊ธฐ๋ฅ์ด์ง๋ง, ์ญ์ ์ด๊ฒ๋ ๋จ์ฉํ์ง๋ ์๋ ๊ฒ์ด ์ข๋ค.
์ฟผ๋ฆฌ๊ฐ ์คํ๋๋ ๋์์๋ WITH์ผ๋ก ๋ฌถ์ด๋์ ๊ฐ๋ค์ด ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ๊ฐ ์ ์ง๋๊ธฐ ๋๋ฌธ์, ๋ฉ๋ชจ๋ฆฌ์ ๋ถ๋ด์ ์ค ์๋ ์๋ค.
์ด์ธ์๋ ํ์ ๊ธฐ๋ฅ์ผ๋ก ์ฌ๊ท๋ฐ๋ณต์ ๊ตฌํํ ์ ์๋ ์ฌ๊ท WITH์ด ์๋ค.
https://blog.naver.com/sssang97/222108356627
์ฐธ์กฐ
https://www.postgresql.org/docs/9.1/queries-with.html