DLife Planet

[쿼리 공부] 상급 3 오랜 기간 보호한 동물(1) (Subquery 2) 본문

카테고리 없음

[쿼리 공부] 상급 3 오랜 기간 보호한 동물(1) (Subquery 2)

Western_Gem 2020. 11. 19. 13:11
반응형

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개네용

 

반응형
Comments