[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