코딩테스트/SQL
[MySQL] 없어진 기록 찾기
코딩로봇
2025. 4. 11. 10:06
https://school.programmers.co.kr/learn/courses/30/lessons/59042
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
📚문제
천재지변으로 인해 일부 데이터가 유실되었습니다. 입양을 간 기록은 있는데, 보호소에 들어온 기록이 없는 동물의 ID와 이름을 ID 순으로 조회하는 SQL문을 작성해주세요.
✏️ 풀이
SELECT O.ANIMAL_ID,O.NAME
FROM ANIMAL_INS I RIGHT JOIN ANIMAL_OUTS O ON I.ANIMAL_ID = O.ANIMAL_ID
WHERE I.DATETIME = NULL
ORDER BY 1
입양 보낸 정보 테이블로 RIGHT JOIN 을 걸면 입양 보낸 정보 테이블의 정보들이 소멸되지 않고 해당 정보를 기준으로 조회 또는 작업이 가능하다.
RIGHT JOIN 을 기준으로 I.DATETIME 이 NULL 이라면 보호소에 온 적없는 ANIMAL_ID 를 찾아낼 수 있다.
의문이 든 점이 RIGHT JOIN 으로 연결한다면 입양을 갔지만 보호소에 들어온 기록이 없는 동물이 ANIMAL_INS 에는 없기때문에 DATETIME 을 기준으로 하지않고 ANIMAL _ID 로 하는것이 더 가독성이 좋지않을까? 생각이 들었다.
SELECT O.ANIMAL_ID,O.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 1
✒️ 회고
- 간단한 문제이긴 하지만 RIGHT,LEFT JOIN 의 개념을 잘 활용해야 풀 수 있는 문제라 블로그에 작성을 해보았다.