문제
내가 작성한 오답
SELECT F.ID, N.FISH_NAME, F.LENGTH
FROM FISH_INFO F
JOIN FISH_NAME_INFO N ON F.FISH_TYPE = N.FISH_TYPE
WHERE F.LENGTH IN (SELECT MAX(LENGTH) FROM FISH_INFO GROUP BY FISH_TYPE)
ORDER BY ID ASC;
→ FISH_TYPE별 최대 길이를 구해서 그 길이와 동일한 물고기를 찾는 쿼리이다.
→ 동일한 최대 길이를 가진 다른 타입이 있을 경우를 생각하지 않았다.
→ 그래서 서브 쿼리에 FISH_TYPE도 함께 출력해야한다.
내가 작성한 정답
SELECT F.ID, N.FISH_NAME, F.LENGTH
FROM FISH_INFO F
JOIN FISH_NAME_INFO N ON F.FISH_TYPE = N.FISH_TYPE
WHERE (F.FISH_TYPE, F.LENGTH) IN (
SELECT I.FISH_TYPE, MAX(I.LENGTH)
FROM FISH_INFO I
GROUP BY I.FISH_TYPE)
ORDER BY F.ID ASC;
다중 컬럼 비교가 가능하다!
Share article