โจ์๋ธ์ฟผ๋ฆฌ(subquery)
์๋ธ์ฟผ๋ฆฌ(subquery)๋ ๋ค๋ฅธ ์ฟผ๋ฆฌ ๋ด๋ถ์ ํฌํจ๋์ด ์๋ SELETE ๋ฌธ์ ์๋ฏธํฉ๋๋ค.
์๋ธ์ฟผ๋ฆฌ๋ฅผ ํฌํจํ๊ณ ์๋ ์ฟผ๋ฆฌ๋ฅผ ์ธ๋ถ์ฟผ๋ฆฌ(outer query)๋ผ๊ณ ๋ถ๋ฅด๋ฉฐ, ์๋ธ์ฟผ๋ฆฌ๋ ๋ด๋ถ์ฟผ๋ฆฌ(inner query)๋ผ๊ณ ๋ ๋ถ๋ฆ ๋๋ค.
์๋ธ์ฟผ๋ฆฌ๋ ๋ฐ๋์ ๊ดํธ(())๋ก ๊ฐ์ธ์ ธ ์์ด์ผ๋ง ํฉ๋๋ค.
MySQL์์ ์๋ธ์ฟผ๋ฆฌ๋ฅผ ํฌํจํ ์ ์๋ ์ธ๋ถ์ฟผ๋ฆฌ๋ SELECT, INSERT, UPDATE, DELETE, SET, DO ๋ฌธ์ด ์์ต๋๋ค.
์ด๋ฌํ ์๋ธ์ฟผ๋ฆฌ๋ ๋ ๋ค์ ๋ค๋ฅธ ์๋ธ์ฟผ๋ฆฌ ์์ ํฌํจ๋ ์ ์์ต๋๋ค.
์๋ธ์ฟผ๋ฆฌ์ ํน์ง
์๋ธ์ฟผ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ฉด ๋ค์๊ณผ ๊ฐ์ ์ฅ์ ์ ์ป์ ์ ์์ต๋๋ค.
1. ์๋ธ์ฟผ๋ฆฌ๋ ์ฟผ๋ฆฌ๋ฅผ ๊ตฌ์กฐํ์ํค๋ฏ๋ก, ์ฟผ๋ฆฌ์ ๊ฐ ๋ถ๋ถ์ ๋ช ํํ ๊ตฌ๋ถํ ์ ์๊ฒ ํด์ค๋๋ค.
2. ์๋ธ์ฟผ๋ฆฌ๋ ๋ณต์กํ JOIN์ด๋ UNION๊ณผ ๊ฐ์ ๋์์ ์ํํ ์ ์๋ ๋ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ ์ ๊ณตํฉ๋๋ค.
3. ์๋ธ์ฟผ๋ฆฌ๋ ๋ณต์กํ JOIN์ด๋ UNION ๋ณด๋ค ์ข ๋ ์ฝ๊ธฐ ํธํฉ๋๋ค.
# ์๋ธ ์ฟผ๋ฆฌ
# ๋ฌธ์ ) bookํ
์ด๋ธ์์ ์ ์ฒด ํ๊ท ๊ฐ๊ฒฉ๋ณด๋ค ๋ ๋์ ๋์์ ๋ณด ๊ฐ์ ธ์ค๊ธฐ
SELECT AVG(book_price) FROM book; -- 22690.4762
SELECT book_price FROM book
WHERE book_price > (SELECT AVG(book_price) FROM book);
# bookํ
์ด๋ธ์์ ๊ฐ์ฅ ๊ฐ๊ฒฉ์ด ๋์ ๋์ ์ ๋ณด ๊ฐ์ ธ์ค๊ธฐ
SELECT * FROM book
WHERE book_price = (SELECT MAX(book_price) FROM book);
FROM ์ ์ ์๋ธ์ฟผ๋ฆฌ
์๋ธ์ฟผ๋ฆฌ๋ SELECT ๋ฌธ์ FROM ์ ์์๋ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ด๋ ์๋ธ์ฟผ๋ฆฌ์ ์ํด ์ ํ๋ ๊ฒฐ๊ณผ ์งํฉ์ FROM ์ ์์ ํ๋์ ํ ์ด๋ธ๋ก์จ ์ฌ์ฉ๋ฉ๋๋ค.
๐กSELECT ๋ฌธ์ FROM ์ ์์ ์ฌ์ฉ๋๋ ๋ชจ๋ ํ ์ด๋ธ์๋ ์ด๋ฆ์ ์ ์ํด์ผ ํฉ๋๋ค.
SELECT ...
FROM (์๋ธ์ฟผ๋ฆฌ) [AS] ์ด๋ฆ
...
'DB > MySQL' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[MySQL] ๋ฐ์ดํฐ ์์ ํ๊ธฐ - UPDATE (0) | 2022.03.29 |
---|---|
[MySQL] ์ ์ฝ ์กฐ๊ฑด - constraint (0) | 2022.03.29 |
[MySQL] CASE ์กฐ๊ฑด๋ฌธ (0) | 2022.03.28 |
[MySQL] ๋ฐ์ดํฐ์ ๊ต์งํฉ & ํฉ์งํฉ - JOIN (0) | 2022.03.28 |
[MySQL] ๋ฐ์ดํฐ ๊ทธ๋ฃนํ - GROUP BY (0) | 2022.03.28 |