Programmers SQL ๊ณ ๋์ Kit ์์ WITH RECURSIVE๋ฅผ ์ฌ์ฉํ์ฌ
์์์ ํ ์ด๋ธ์ ์์ฑํ๊ณ Joinํ์ฌ ํ์ดํด์ผํ๋ ๋ฌธ์ ๋ฅผ ๋ง๋ฌ์ต๋๋ค
์ฒ์ ๋ง์ฃผํ๋ ๋ฌธ๋ฒ์ด์๊ณ , ์ ๋ฆฌํ๊ธฐ ์ํด ๊ธ ์์ฑํ๊ฒ ๋์์ต๋๋ค.
WITH RECURSIVE
์ด๋ฆ์์ ์ ์ ์๋ฏ์ด recursive(์ฌ๊ท์ ์ธ) ํ๋ก๊ทธ๋๋ฐ ๋ฌธ๋ฒ์ ๋๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก UNION ๊ฐ๋ ์ ์ดํดํ๊ณ ์์ด์ผ ํฉ๋๋ค.
[MySQL] NULL๊ฐ ๋ณ๊ฒฝ(์นํ) ์ถ๋ ฅ | UNION | ๋ฌธ์์ด ๋ถ๋ถ ์ถ๋ ฅ | DATE ํ์ ์ถ๋ ฅ ํ์ ์ง์
์๋ ํ์ฐ์~ ์ค๋์ ํ์ตํ ๋ด์ฉ์ ์ ๋ฆฌํ๊ธฐ ์ํด ๋์์์ต๋๋ค ํ๋์ SQL๊ด๋ จ ๊ธ๋ค์ Programmers School์ SQL ๊ณ ๋์ Kit ๋ฌธ์ ๋ค์ ํ๋ฉด์ ๋ชฐ๋๋, ๊น๋จน์๋ ๋ด์ฉ๋ค์ ๊ธฐ๋ฐ์ผ๋ก ์์ฑํ ๊ฒ ๊ฐ์ต๋๋ค.
seen-young.tistory.com
1. UNION ALL์ ๊ธฐ์ค์ผ๋ก ์๋จ SELECT๋ 1ํ๋ง ์คํ๋ฉ๋๋ค. ์ด ๋ <cloum>๋ช ์ ๊ฐ์ง๋ <table>์ด ์์ฑ๋ฉ๋๋ค.
2. ์ดํ ํ๋จ SELECT๋ฌธ์ ์ฐ์ ์คํํฉ๋๋ค.
์์ ์์ฑํ <table>๋ก ๋ถํฐ <column>์ ๋ง์ง๋ง ๋ ์ฝ๋๋ฅผ ๊ฐ๋ฆฌํค๊ณ ์์ต๋๋ค.
( +1 ๋ฑ ์ฐ์์ ์ธ ๊ฐ์ ์ ๋ ฅํ ์ ์๊ฒ ์ฃ ?)
3. ๋ค์์ ๋ฐ๋ณต์ ์ธ์ ๊น์ง ์ํํ ๊ฒ์ธ์ง WHERE๋ฌธ์ผ๋ก ๋ฐ๋์ ์ง์ ํด์ฃผ์ด์ผ ํฉ๋๋ค
WITH RECURSIVE <table> AS(
SELECT <data> as <column>
UNION ALL
SELECT <column> FORM <table>
WHERE <์กฐ๊ฑด๋ฌธ>
)
์์ ์ฝ๋
WITH RECURSIVE temp as(
SELECT 0 as h
UNION ALL
SELECT h+1 FROM temp
WHERE 23 < 0
)
SELECT * FROM temp
๊ฒฐ๊ณผ๋ฅผ ๋ณด๋ ํด๋น ๋ฌธ๋ฒ์ ๋ํ ๊ฐ์ด ์ค์๋์?! ๋ฌธ์ ๋ฅผ ํ์ด๋ณด๋ฉด์ ํ์คํด ๋ด ๊ฒ์ผ๋ก ๋ง๋ค์ด ๋ด ์๋ค!
<์ ์ ์๊ฐ ๊ตฌํ๊ธฐ(2)>
https://school.programmers.co.kr/learn/courses/30/lessons/59413
ํ๋ก๊ทธ๋๋จธ์ค
์ฝ๋ ์ค์ฌ์ ๊ฐ๋ฐ์ ์ฑ์ฉ. ์คํ ๊ธฐ๋ฐ์ ํฌ์ง์ ๋งค์นญ. ํ๋ก๊ทธ๋๋จธ์ค์ ๊ฐ๋ฐ์ ๋ง์ถคํ ํ๋กํ์ ๋ฑ๋กํ๊ณ , ๋์ ๊ธฐ์ ๊ถํฉ์ด ์ ๋ง๋ ๊ธฐ์ ๋ค์ ๋งค์นญ ๋ฐ์ผ์ธ์.
programmers.co.kr
REFERENCE
https://inpa.tistory.com/entry/MYSQL-%F0%9F%93%9A-RECURSIVE-%EC%9E%AC%EA%B7%80-%EC%BF%BC%EB%A6%AC
[MYSQL] ๐ RECURSIVE (์ฌ๊ท ์ฟผ๋ฆฌ)
WITH RECURSIVE ๋ฌธ (์ฌ๊ท ์ฟผ๋ฆฌ) ํ๋ก๊ทธ๋๋ฐ์์ ์ฌ๊ท ํจ์๋ฅผ ๋ค์ด๋ดค๋ฏ์ด, SQL์์๋ ์ฌ๊ท ์ฟผ๋ฆฌ ๊ธฐ๋ฒ์ด ์กด์ฌํ๋ค. ๋ค๋ง ๋ฌธ๋ฒ์ด ๊ต์ฅํ ํด๊ดดํ๋ฐ ์ฐ์ WITH RECURSIVE ์ฟผ๋ฆฌ๋ฌธ์ ์์ฑํ๊ณ ๋ด๋ถ์ UNION์ ํตํด
inpa.tistory.com