
📑 1. 문제설명




❌ 2. 실패한 시도
없음
⭐ 3. 정답코드
-- 코드를 입력하세요
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 asc
LIMIT 3;
animal_ins 테이블에는 있는데 animal_outs에는 없는 동물을 찾으면 된다.
그렇다면 기준테이블은 animal_ins이고, 이 테이블을 왼쪽에 놓고 LEFT OUTER JOIN을 수행한다.
JOIN된 테이블에서 o.animal_id가 null인 데이터를 조회하면 animal_ins에는 있고 animal_outs에는 없는 동물들 목록이 나온다.
그 중 보호시작일 오래된 순으로 3개니까 animal_ins테이블의 datetime 기준 오름차순 정렬 한 후에
마지막으로 limit3 을 해야 한다.
왜냐하면 SQL문 수행순서가 limit은 order by보다도 더 늦게 수행되기 때문이다.
정렬된 데이터 중 위에서 3개이기 때문이다.
'코딩테스트 > SQL테스트' 카테고리의 다른 글
| [프로그래머스] (MySQL) 진료과별 총 예약횟수 조회하기 (8) | 2025.08.07 |
|---|---|
| [프로그래머스] (MySQL) 특정 기간동안 대여 가능한 자동차들의 대여비용 구하기 (4) | 2025.05.19 |
| [프로그래머스] (MySQL) 있었는데요 없었습니다 (0) | 2025.05.18 |
| [프로그래머스] (MySQL) 없어진 기록 찾기 (1) | 2025.05.18 |
| [프로그래머스] (MySQL) 상품 별 오프라인 매출 구하기 (2) | 2025.05.18 |