๐Ÿฌ MySQL/Programmers ํ’€์ด

[Programmers] ์—†์–ด์ง„ ๊ธฐ๋ก ์ฐพ๊ธฐ (Lv.3)

Chloe._. 2022. 7. 20. 14:50

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