Database·SQL
Oracle WITH ๊ตฌ๋ฌธ์ MySQL๋ก ๋ณํํ๊ธฐ
Leica
2020. 12. 8. 16:59
๋ฐ์ํ
Oracle WITH ๊ตฌ๋ฌธ์ MySQL๋ก ๋ณํํ๊ธฐ
MySQL 8.0 ์ด์ ๋ฒ์ ์์๋ WITH ๊ตฌ๋ฌธ์ด ์ง์๋์ง ์๊ธฐ ๋๋ฌธ์ WITH ๊ตฌ๋ฌธ์ ๋ณํํ๋ ค๋ฉด ๋ค์ ์ ํ์ง ์ค ํ๋๋ฅผ ํํ ์ ์๋ค.
- Temporary Table(์์ ํ ์ด๋ธ)
- Derived Table
- Inline View
๋ณธ ๊ธ์์๋ inline view๋ฅผ ์ด์ฉํ์ฌ Oracle WITH ๊ตฌ๋ฌธ์ ๋ณ๊ฒฝํด ๋ณผ ๊ฒ์ด๋ค.
WITH ๊ตฌ๋ฌธ์ Inline View๋ก ๋ณํํ๋ ์์
ํธ์์ ๊ฐ๋จํ ์ฟผ๋ฆฌ๋ฅผ ์์ ๋ก ๋ค์๋ค.
โน๏ธOracle WITH:
WITH SAMPLE_WITH AS (SELECT ID FROM SAMPLE_TBL)
SELECT A.ID
FROM ANOTHER_TBL A,
SAMPLE_WITH B
WHERE A.ID = B.ID
โน๏ธMySQL Inline View:
SELECT A.ID
FROM ANOTHER_TBL A,
(SELECT ID FROM SAMPLE_TBL) B
WHERE A.ID = B.ID
MyBatis์ sql, include์ ํจ๊ป ์ฌ์ฉํ๊ธฐ
MyBatis ์ฌ์ฉ ์ WITH ๊ตฌ๋ฌธ๊ณผ inline view๋ MyBatis์ <sql>๊ณผ <include>๋ฅผ ์ฌ์ฉํด์ ๋ฐ๋ณต ์ฝ๋๋ฅผ ์ค์ด๊ณ ๊น๋ํ๊ฒ ์ ๋ฆฌํ ์ ์๋ค.
โน๏ธOracle WITH:
<sql id="info">
SELECT AGT_ID FROM SAMPLE_TBL
</sql>
<select id="get..." parameterType="..." resultType="...">
WITH SAMPLE_WITH AS (<include refid="info" />)
SELECT A.ID
FROM ANOTHER_TBL A,
SAMPLE_WITH B
WHERE A.ID = B.ID
</select>
โน๏ธMySQL Inline View:
<sql id="info">
SELECT AGT_ID FROM SAMPLE_TBL
</sql>
<select id="get..." parameterType="..." resultType="...">
SELECT A.ID
FROM ANOTHER_TBL A,
(<include refid="info" />) B
WHERE A.ID = B.ID
</select>
[์ฐธ๊ณ ] Oracle WITH ๊ตฌ๋ฌธ
- WITH ๊ตฌ๋ฌธ ๋ด์ ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ(์๋ธ์ฟผ๋ฆฌ)๊ฐ ์ฌ๋ฌ ๋ฒ ์ฌ์ฉ๋ ๋ ์ ์ฉํ๋ค.
- ์๋ธ์ฟผ๋ฆฌ ๋ธ๋ญ์ ์ด๋ฆ์ ์ง์ ํ ์ ์๋ค.
- ์ค๋ผํด ์ตํฐ๋ง์ด์ ๋ ์ฟผ๋ฆฌ๋ฅผ ์ธ๋ผ์ธ๋ทฐ๋ ์์ ํ ์ด๋ธ๋ก ์ฌ๊ธด๋ค.
- Oracle 9 ์ด์ ์ง์
[์ฐธ๊ณ ] MySQL Inline View
- FROM ์ ์์ ์ฌ์ฉ๋๋ ์๋ธ์ฟผ๋ฆฌ๋ฅผ ์ธ๋ผ์ธ ๋ทฐ ๋ผ๊ณ ํ๋ค.
- ์๋ธ์ฟผ๋ฆฌ์ ๊ฒฐ๊ณผ๊ฐ ๋ง์น ์คํ ์์ ๋์ ์ผ๋ก ์์ฑ๋ ํ ์ด๋ธ์ธ ๊ฒ์ฒ๋ผ ์ฌ์ฉํ ์ ์๋ค.
- ์ธ๋ผ์ธ ๋ทฐ๋ SQL ๋ฌธ์ด ์คํ๋ ๋๋ง ์์๋ก ์์ฑ๋๋ ๋์ ๋ทฐ์ด๋ค.
- ์ธ๋ผ์ธ ๋ทฐ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ์กฐ์ธ ๋ฐฉ์์ ์ฌ์ฉํ๋ ๊ฒ๊ณผ ๊ฐ๋ค.
References
- stackoverflow.com/questions/1382573/how-do-you-use-the-with-clause-in-mysql
- powerofwriting.tistory.com/entry/Oracle-WITH-%EA%B5%AC%EB%AC%B8-%EC%98%88%EC%A0%9C
- hhseong.tistory.com/88
๋ฐ์ํ