[프로그래머스/MySQL] 없어진 기록 찾기

지누초이·2024년 3월 28일

프로그래머스

목록 보기
33/37
post-thumbnail

문제

https://school.programmers.co.kr/learn/courses/30/lessons/59042


노트

ANIMAL_INS 테이블에는 보호소에 들어온 동물의 정보를 담는다.
ANIMAL_OUTS 테이블에는 입양을 간 동물의 정보를 담는다.

문제에서 구하고자 하는 것은 입양을 간 기록은 있는데 보호소에 들어온 기록은 없는 동물의 리스트이다.

집합의 관점에서 보자면
입양을 간 리스트를 A,
보호소에 들어온 리스트를 B라고 하면,
A에만 있고 B에는 없어야한다.
다시 말해 A-B이다.

위의 경우에 해당한다.
핵심은 LEFT JOIN 에서 JOIN을 하는 B 의 대상 key가 WHERE 절에서 NULL 이어야한다는 것이다.
위 차집합 개념을 통해 A에만 존재하는 데이터를 얻을 수 있다.


정답

SELECT
    A.ANIMAL_ID
    , A.NAME
FROM
    ANIMAL_OUTS A
LEFT OUTER JOIN ANIMAL_INS B 
    ON A.ANIMAL_ID = B.ANIMAL_ID
WHERE
    B.ANIMAL_ID IS NULL
ORDER BY
    A.ANIMAL_ID

더 좋은 해결방법이 있다면 언제든 댓글로 알려주세요 🤗

0개의 댓글