๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Database/DB ๋ฌธ์ œํ’€์ด

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ์—†์–ด์ง„ ๊ธฐ๋ก ์ฐพ๊ธฐ

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ์—†์–ด์ง„ ๊ธฐ๋ก ์ฐพ๊ธฐ MySQL

๋ฌธ์ œ : ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค_์—†์–ด์ง„ ๊ธฐ๋ก ์ฐพ๊ธฐ

๋ฌธ์ œ ์„ค๋ช…

๋ณดํ˜ธ์†Œ์— ๋“ค์–ด์˜จ ๋™๋ฌผ์˜ ์ •๋ณด์™€ ๋ณดํ˜ธ์†Œ์—์„œ ์ž…์–‘ ๋ณด๋‚ธ ๋™๋ฌผ์˜ ์ •๋ณด๋ฅผ ๋‹ด์€ ํ…Œ์ด๋ธ”์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋•Œ ๋ฐ์ดํ„ฐ๊ฐ€ ์œ ์‹ค๋˜์–ด ๋ณดํ˜ธ์†Œ์—์„œ ์ž…์–‘ ๋ณด๋‚ธ ํ…Œ์ด๋ธ”์—๋Š” ์กด์žฌํ•˜์ง€๋งŒ ๋ณดํ˜ธ์†Œ์— ๋“ค์–ด์˜จ ํ…Œ์ด๋ธ”์—๋Š” ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๋™๋ฌผ์ด ์ƒ๊ธฐ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ด ๋™๋ฌผ๋“ค์˜ ID์™€ ์ด๋ฆ„์„ ์กฐํšŒํ•˜๋Š” SQL์„ ์ž‘์„ฑํ•˜๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.


Solution

RIGHT JOIN, NOT IN

๋‘ ๊ฐ€์ง€ ํ’€์ด๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค.

  • RIGHT JOIN์„ ์ด์šฉํ•ด ๋ณดํ˜ธ์†Œ์—์„œ ์ž…์–‘ ๋ณด๋‚ธ ๋™๋ฌผ๋“ค์„ ๊ตฌํ•œ ๋’ค, ๋‘ ํ…Œ์ด๋ธ” ๋ชจ๋‘์— ์†ํ•œ ๋™๋ฌผ๋“ค์„ ์ œ์™ธํ•ด ์ฃผ๋Š” ๋ฐฉ๋ฒ•
  • NOT IN์„ ์ด์šฉํ•˜์—ฌ ์ž…์–‘ ๋ณด๋‚ธ ํ…Œ์ด๋ธ”์—์„œ ๋ณดํ˜ธ์†Œ์— ๋“ค์–ด์˜จ ํ…Œ์ด๋ธ”์˜ ๋™๋ฌผ์„ ์ œ์™ธํ•ด ์ฃผ๋Š” ๋ฐฉ๋ฒ•
    ์œผ๋กœ ๋‘ ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค.

ํ’€์ด 1

SELECT o.ANIMAL_ID AS ANIMAL_ID, o.NAME AS NAME
FROM ANIMAL_INS i RIGHT JOIN ANIMAL_OUTS o
ON i.animal_id = o.animal_id
WHERE i.animal_id IS null
ORDER BY o.ANIMAL_ID; 

ํ’€์ด 2

SELECT ANIMAL_ID, NAME
FROM ANIMAL_OUTS WHERE ANIMAL_ID
NOT IN
(SELECT ANIMAL_ID FROM ANIMAL_INS)
ORDER BY ANIMAL_ID;