
GROUP BY를 사용할 때,
이를 위반할 경우, 오류가 발생한다.
SELECT ID, FISH_TYPE, MAX(LENGTH)
FROM FISH_INFO
GROUP BY FISH_TYPE;
이 쿼리는 FISH_TYPE별로 그룹화하면서 ID와 LENGTH도 선택하고 있다.
하지만 ID는 GROUP BY 절에 포함되지 않고, MAX(LENGTH)는 집계 함수로 처리되었으므로 ID가 어떤 값을 선택해야 하는지 MySQL이 모호하게 생각한다.
ONLY_FULL_GROUP_BY 모드에서는 이 쿼리가 오류를 일으킨다.
SELECT FISH_TYPE, MAX(LENGTH)
FROM FISH_INFO
GROUP BY FISH_TYPE;
여기서는 FISH_TYPE으로 그룹화하고, MAX(LENGTH)로 가장 큰 길이만 집계하므로 오류가 발생하지 않는다. 이 쿼리는 명확한 그룹화와 집계를 사용했기 때문에 ONLY_FULL_GROUP_BY 모드에서도 정상적으로 작동한다.