์๋ธ์ฟผ๋ฆฌ(Subquery)๋
๐ ์ฟผ๋ฆฌ ์์ ํฌํจ๋ ๋ ๋ค๋ฅธ ์ฟผ๋ฆฌ๋ฅผ ๋งํฉ๋๋ค.
() ์์ ๋ค์ด๊ฐ๋ฉฐ, ํ๋์ ๊ฐ์ด๋ ํ
์ด๋ธ์ฒ๋ผ ์ฌ์ฉ๋จJOIN์ผ๋ก๋ ํํ ๊ฐ๋ฅํ์ง๋ง, ์๋ธ์ฟผ๋ฆฌ๋ ๋ณต์กํ ๋ก์ง์ ๋จ๊ณ๋ณ๋ก ๋๋ ๋ ์ ์ฉํจ| ์์น | ์ฉ๋ | ์ค๋ช |
|---|---|---|
SELECT |
์ปฌ๋ผ์ฒ๋ผ ์ฌ์ฉ | ํน์ ๊ฐ์ ๊ณ์ฐํ๊ฑฐ๋ ๊ฐ์ ธ์ฌ ๋ |
FROM |
๊ฐ์์ ํ ์ด๋ธ๋ก ์ฌ์ฉ | ์๋ธ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ํ ์ด๋ธ์ฒ๋ผ ์ฌ์ฉ |
WHERE |
์กฐ๊ฑด๋ฌธ์ผ๋ก ์ฌ์ฉ | ์ด๋ค ์กฐ๊ฑด์ ๋ง์กฑํ๋์ง๋ฅผ ์๋ธ์ฟผ๋ฆฌ๋ก ํ๋จ |
| ํค์๋ | ์ค๋ช | ์์ |
|---|---|---|
IN |
์๋ธ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ ์์ ์๋ ๊ฐ์ธ์ง ํ์ธ | WHERE id IN (SELECT id FROM ...) |
NOT IN |
์๋ธ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ์ ์๋ ๊ฐ์ธ์ง ํ์ธ | WHERE id NOT IN (SELECT id FROM ...) |
EXISTS |
์๋ธ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ๊ฐ ์กด์ฌํ๋์ง๋ง ํ์ธ | WHERE EXISTS (SELECT ... WHERE ...) |
ANY |
์๋ธ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ ์ค ํ๋๋ผ๋ ๋ง์กฑํ๋์ง | > ANY (SELECT price FROM ...) |
ALL |
์๋ธ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ ๋ชจ๋์ ๋ํด ๋ง์กฑํ๋์ง | < ALL (SELECT age FROM ...) |
WHERE์ ์๋ธ์ฟผ๋ฆฌSELECT name
FROM students
WHERE student_id IN (
SELECT student_id
FROM exam_scores
WHERE score > 90
);
๐ฌ ์ํ์์ 90์ ์ด์ ๋ฐ์ ํ์๋ค์ ์ด๋ฆ์ ์กฐํ
SELECT์ ์๋ธ์ฟผ๋ฆฌSELECT name,
(SELECT MAX(score) FROM exam_scores) AS highest_score
FROM students;