SQL 관련 모든 문제들은 MySQL을 기준으로 해결했다.
ANIMAL_INS는 아직 보호소에 있는 동물 테이블, ANIMAL_OUTS는 입양나간 동물들 테이블이다.
입양을 못 간 동물들 중 보호소에 남아있는 동물을 조회해야 하며 ANIMAL_INS의 DATETIME을 기준으로 정렬한다.
모든 행을 조회하는 것이 아니라 3행만 조회한다.
LEFT JOIN
을 이용해야 한다. ANIMAL_INS(왼쪽 테이블)을 기준으로 ANIMAL_OUTS(오른쪽 테이블)을 JOIN하며 매치되는 레코드가 오른쪽 테이블에 없으면 NULL을 표시한다.
입양을 못 간 동물들 중 보호소에 남아있는 동물을 조회하므로 ANIMAL_OUT에는 레코드가 없을 것이다. 따라서 O.ANIMAL_ID IS NULL
을 넣어 ANIMAL_INS에는 있지만 ANIMAL_OUTS에는 없는 값을 출력한다.
SELECT I.NAME, I.DATETIME
FROM ANIMAL_INS I
LEFT JOIN ANIMAL_OUTS O
ON I.ANIMAL_ID=O.ANIMAL_ID
WHERE O.ANIMAL_ID IS NULL
ORDER BY I.DATETIME ASC
LIMIT 3;
문제 출처 : https://programmers.co.kr/learn/courses/30/lessons/59044