[SQL] 테이블에 없는 내용 join 하기 (없어진 기록 찾기)

도리·2025년 2월 24일

programmers lv3. 없어진 기록 찾기

문제

천재지변으로 인해 일부 데이터가 유실되었습니다. 입양을 간 기록은 있는데, 보호소에 들어온 기록이 없는 동물의 ID와 이름을 ID 순으로 조회하는 SQL문을 작성해주세요.

내 코드

SELECT distinct o.animal_id, o.name
from animal_outs o 
left join animal_ins i on o.animal_id = i.animal_id
order by o.animal_id, o.name

참고한 블로그:
https://chanhuiseok.github.io/posts/db-7/

  • left join 시 job이 같은 것끼리 묶인다.
    이때 one table 기준으로 one내용이 중복된다...!!!
    이때 왼쪽에 있는 값이 없으면 two table에 들어갈자리는 모두 null이 된다.

정답코드

SELECT O.ANIMAL_ID, O.NAME
FROM ANIMAL_OUTS O
LEFT OUTER JOIN ANIMAL_INS I
ON O.ANIMAL_ID = I.ANIMAL_ID
WHERE I.ANIMAL_ID is NULL
ORDER BY O.ANIMAL_ID

오답

  • where i.animal_id is null
  • outer join 시 없는값은 null이 된다는 것을 이용해야 한다.
profile
인공지능응용학과 졸업

0개의 댓글