[Programmers] ์์ด์ง ๊ธฐ๋ก ์ฐพ๊ธฐ (Lv.3)
OUT(์ ์๋ณด๋)ํ ์ด๋ธ์ ์๋๋ฐ IN(๋ณดํธ์ ๋ค์ด์ด)ํ ์ด๋ธ์ ์๋ ์ ์ค๋ ๋๋ฌผ์ ๋ฐ์ดํฐ๋ฅผ ์ฐพ๋ ๋ฌธ์ ์๋ค
๋ฐฉ๋ฒ1: ๋ด ์ฟผ๋ฆฌ, LEFT JOIN + IS NULL (์ฐจ์งํฉ)
SELECT O.ANIMAL_ID, O.NAME
FROM ANIMAL_OUTS O LEFT JOIN ANIMAL_INS I ON O.ANIMAL_ID = I.ANIMAL_ID
WHERE I.ANIMAL_ID IS NULL
ORDER BY ANIMAL_ID
JOIN ํ [ WHERE ํ ์ด๋ธ2.์ปฌ๋ผ IS NULL ] ์ ๋ฃ์ผ๋ฉด ์ฐจ์งํฉ(INTERSECT)๊ฐ๋ ์ด ๋๋ค
์ฝ๊ฒ ํ์๋ค
๋ฐฉ๋ฒ2: NOT IN ์๋ธ์ฟผ๋ฆฌ
SELECT ANIMAL_ID, NAME
FROM ANIMAL_OUTS
WHERE ANIMAL_ID NOT IN (SELECT ANIMAL_ID FROM ANIMAL_INS)
ORDER BY ANIMAL_ID
join ์์ด ๊ทธ๋ฅ INํ ์ด๋ธ์ ์๋ ID๋ฅผ ๋ฐ๋ ค์ค๋ผ๋ ์กฐ๊ฑด์ผ๋ก ๊ฐ๋จํ ํ ์๋ ์๋ค
ํ์ง๋ง ์กฐ์ธ์ผ๋ก ๋์ฒดํ ์ ์๋ ์๋ธ์ฟผ๋ฆฌ๋ ์กฐ์ธ์ผ๋ก ์ฐ๋๊ฒ ์ฑ๋ฅ์ ๋ซ๋ค! ์ด๋ฐ ๋ฌธ์ ์ ๊ฒฝ์ฐ ์๋ธ์ฟผ๋ฆฌ์ ๊ฒฐ๊ณผ๋ฅผ ๋ฉ์ธ์ฟผ๋ฆฌ์ ๊ฒฐ๊ณผ์ ๋น๊ต(NOT IN์ธ์ง ๋๋ฉด์ ํ์ธ)ํ๋๊น ์คํ์๊ฐ์ด ๊ธธ์ด์ง ์๋ฐ์ ์๊ธฐ ๋๋ฌธ์ด๋ค.
์๋ธ์ฟผ๋ฆฌ๋ (SQL์ ๋ฌธ์์ผ์๋ก) ์์ฑํ ๋ ๊ฐํธํด์ ๋จ์ฉ๋๊ธฐ๋ ํ์ง๋ง ์ด์ฉ ๋ ๋์ฒด๋ ์ ์๋ ๋ฐฉ๋ฒ์ ๋นํด 1) ์ฑ๋ฅ์ด ๋ง์ด ๋ถ์กฑํ๊ฑฐ๋ 2) ์ฟผ๋ฆฌ์ฃผ์ธ์ด ์๋ ์ฌ๋์ด ์ฝ๊ธฐ์ ๊ฐ๋ ์ฑ์ด ๋จ์ด์ง๋ ๋ฑ ๋จ์ ์ด ์๋ค.
์ฐธ๊ณ ๊ธ
https://kimsyoung.tistory.com/entry/SUBQUERY-%EC%99%80-JOIN-%EC%9D%98-%EC%B0%A8%EC%9D%B4-%E4%B8%8A
SUBQUERY ์ JOIN ์ ์ฐจ์ด (ไธ)
SQL ์ฟผ๋ฆฌ๋ฌธ์ ์์ฑํ๋ฉด์ ๋ง์ฃผํ ๊ณ ๋ฏผ ์ค ํ๋๋ ๋ฐ๋ก ์๋ธ ์ฟผ๋ฆฌ์ ์กฐ์ธ ์ค ์ด๋ค ๋ฌธ๋ฒ์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์์ง ํ๋จํ๋ ๊ฒ์ ๋๋ค. ์ํฉ์ ๋ฐ๋ผ ์กฐ์ธ์ ์ฌ์ฉํ๋ ๊ฒ์ด ํจ์ฌ ์ข์ ๋๋ ์๊ณ , ๋ฐ๋ฉด
kimsyoung.tistory.com