[Database] 없어진 기록 찾기

[프로그래머스] 없어진 기록 찾기 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;