코딩테스트/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 의 개념을 잘 활용해야 풀 수 있는 문제라 블로그에 작성을 해보았다.