[쿼리 공부] 상급 3 오랜 기간 보호한 동물(1) (Subquery 2)
JOIN대신 Subquery가 들어간 예제 공식적으로 두번째 입니다.
[문제]
아직 입양을 못 간 동물 중, 가장 오래 보호소에 있었던 동물 3마리의 이름과 보호 시작일을 조회하는 SQL문을 작성해주세요. 이때 결과는 보호 시작일 순으로 조회해야 합니다.
[해설]
간단합니다. 그간 올린 포스팅을 응용하시면 이해가 될거에요.
[정답]
Mysql 모범답안
-- not exists
select a.NAME, a.DATETIME from ANIMAL_INS a
where not exists (select b.animal_id from ANIMAL_OUTS b where a.animal_id = b.animal_id)
order by a.datetime asc limit 3;
-- not in
SELECT NAME, DATETIME FROM ANIMAL_INS where animal_id not in (select animal_id from animal_outs) order by datetime limit 3;
Oracle 모범답안
-- not exists
select a.NAME, a.DATETIME from ANIMAL_INS a
where not exists (select b.animal_id from ANIMAL_OUTS b where a.animal_id = b.animal_id) and rownum <= 3
order by a.datetime asc;
-- not in
SELECT NAME, DATETIME FROM ANIMAL_INS where animal_id not in (select animal_id from animal_outs) and rownum <=3 order by datetime;
limit 이냐 rownum이냐, exist냐 in이냐 2*2 답이 총 4개네용
끝