select ID, FISH_NAME, LENGTH
from FISH_INFO I
join FISH_NAME_INFO N on I.FISH_TYPE = N.FISH_TYPE
where (I.FISH_TYPE, LENGTH) in (
select FISH_TYPE, max(LENGTH)
from FISH_INFO
group by FISH_TYPE
)
order by ID
where 조건절을 처음에
where LENGTH in (
select max(LENGTH)
from FISH_INFO
group by FISH_TYPE
)
이렇게 LENGTH만 뽑아서 틀렸다.
(60, 73, 73) 이렇게 각 타입별로 LENGTH를 뽑았다고 생각하지만, 결론적으로 비교하는 값은 LENGTH만이기 때문에
타입에 상관없이 저 값을 가진 데이터가 출력되어 의도와 다르게 결과가 나타날 수 있다.
ID | FISH_NAME | LENGTH |
---|---|---|
6 | BASS | 60 |
8 | ANCHOVY | 73 |
9 | SNAPPER | 73 |