[My SQL] not in GROUP BY clause and contains nonaggregated column

yannie·2024년 10월 17일
0

Error

목록 보기
2/2

GROUP BY를 사용할 때,

  • SELECT에 있는 모든 컬럼은 GROUP BY 절에 포함되거나 집계 함수로 처리되어야 한다.
  • 집계 함수를 사용하지 않은 경우, GROUP BY 절에서 명시적으로 그룹화된 컬럼만 SELECT할 수 있다.

이를 위반할 경우, 오류가 발생한다.

  1. 오류 발생 예시 (잘못된 쿼리)
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 모드에서는 이 쿼리가 오류를 일으킨다.

  1. 수정된 쿼리 (올바른 쿼리)
SELECT FISH_TYPE, MAX(LENGTH)
FROM FISH_INFO
GROUP BY FISH_TYPE;

여기서는 FISH_TYPE으로 그룹화하고, MAX(LENGTH)로 가장 큰 길이만 집계하므로 오류가 발생하지 않는다. 이 쿼리는 명확한 그룹화와 집계를 사용했기 때문에 ONLY_FULL_GROUP_BY 모드에서도 정상적으로 작동한다.

0개의 댓글