[SQL] 프로그래머스 SQL lv3 - 오랜 기간 보호한 동물(1)

bagt13·2025년 9월 25일
0

Database

목록 보기
10/10

문제

https://school.programmers.co.kr/learn/courses/30/lessons/59044

풀이

문제에서 요구하는 쿼리 결과는 A와 B 테이블이 존재할때, A에만 존재하는 데이터이다.

따라서 이 문제는 두 가지 방식으로 풀 수 있다.

  1. 서브쿼리 사용
    WHERE절 서브쿼리를 사용하여, A 테이블에 존재하는 데이터 중, 서브쿼리(B 테이블)에 존재하지 않는 데이터만 조회한다.
SELECT i.name, i.datetime
FROM animal_ins i
WHERE i.animal_id NOT IN
	(SELECT o.animal_id FROM animal_outs o)
ORDER BY i.datetime
LIMIT 3;
  1. OUTER JOIN 사용
    LEFT OUTER JOIN을 통해 A 테이블의 모든 데이터를 조회한 후, B 테이블의 데이터가 NULL인 값만 추출하면, A 테이블에만 존재하는 데이터만 조회할 수 있다.
SELECT i.name, i.datetime
FROM animal_ins i
LEFT OUTER JOIN animal_outs o
ON i.animal_id = o.animal_id
WHERE o.animal_id is NULL
ORDER BY i.datetime
LIMIT 3;

profile
백엔드 개발자입니다😄

0개의 댓글