코딩테스트 연습 - 없어진 기록 찾기 | 프로그래머스 (programmers.co.kr)

 

코딩테스트 연습 - 없어진 기록 찾기

ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디

programmers.co.kr

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

 


JOIN을 얼마나 잘 활용하느냐를 묻는 문제이다. 

ANIMAL_INS에는 없고, ANIMAL_OUTS에만 있는 데이터를 찾아달라는 것이다. 
따라서, 1번으로 join을 해주는데, inner가 아닌 outer조인을 해줘야 한다. 
그럼 어떻게 붙일까. 
난 ANIMAL_INS를 Select 문의 from에 썼으므로, right join으로 ANIMAL_OUTS를 붙였다. 
그리고 id가 같은녀석들로 붙였으며, 마지막에 where문을 사용하여, ANIMAL_INS.ANIMAL_ID IS NULL 을 조건으로 걸면 
outs 테이블에만 있는 녀석들을 찾을 수 있다!

SELECT ao.ANIMAL_ID, ao.NAME FROM ANIMAL_INS ai
right join ANIMAL_OUTS ao
on ao.ANIMAL_ID = ai.ANIMAL_ID
where ai.ANIMAL_ID is null

'SQL > SQL 공부' 카테고리의 다른 글

SQL Join에 대하여  (0) 2021.05.28
기초 문법  (0) 2021.05.28

+ Recent posts