본문 바로가기
문제풀이/SQL(My sql)

[문제풀이] 없어진 기록 찾기

by kime2 2024. 1. 19.
출처

 

문제

입양을 간 기록은 있는데, 보호소에 들어온 기록이 없는 동물의 ID와 이름을 ID 순으로 조회하는 SQL문을 작성해주세요.

 

문제에 대한 해석

1. 조건:입양데이터에는 있지만 보호소데이터에는 없는
2. 조회: 동물ID,이름
3. 순서: 동물ID 오름차순

 

 

풀이(MYSQL)

select outs.animal_id, outs.name
from animal_outs outs left join animal_ins ins 
on outs.animal_id = ins.animal_id
where ins.animal_id is null
order by outs.animal_id ;

 

작동순서

💡SQL 실행 순서는 From -> Where -> Group by -> Having -> Select -> Order by ->결과반환

 

  1. FROM 절: animal_outs 와 animal_ins을 animal_id를 기준으로 left join(inner join의 경우 공통된 데이터만 조회되니까 leftjoin을 통해 곹옹되지 않은 데이터도 조회)
  2. WHERE 절: animal_ins테이블에 animal_id가 null값인 것(즉,  animal_outs에 있지만 animal_ins에 없는) 필터링
  3. SELECT 절: outs.animal_id, outs.name
  4. ORDER BY 절: outs.animal_id오름차순
  5. 결과반환: animal_outs에 있지만 animal_ins에는 없는 animal_id,name

배운점

  • 다양한 join의 활용