DBAtlas · 데이터베이스 운영 아틀라스

1055: Expression not in GROUP BY (only_full_group_by) (GROUP BY에 없는 표현식)

MySQL

의미

GROUP BY에도 없고 집계 함수로 감싸지도 않은 컬럼을 SELECT 목록이나 HAVING/ORDER BY에서 사용했다. ONLY_FULL_GROUP_BY SQL 모드가 활성화되어 있어 MySQL이 이 비결정적 표현식을 거부한다.

원인

쿼리가 그룹화된 컬럼이 아닌 컬럼을 직접 선택하지만, 그 컬럼은 그룹당 단일 값이 아닐 수 있다. ONLY_FULL_GROUP_BY는 MySQL 5.7+에서 기본적으로 활성화되며, 이전의 관대한 GROUP BY 동작에 의존하는 쿼리가 이 오류를 발생시킨다.

해결 방법

컬럼을 GROUP BY 목록에 추가하거나 집계 함수(MAX(), MIN(), ANY_VALUE())로 감싼다. 값이 그룹 내에서 실제로 고유하다는 것을 안다면 ANY_VALUE()로 모호성을 의도적으로 억제한다. 쿼리를 고치는 대신 모드를 비활성화하면(sql_mode에서 ONLY_FULL_GROUP_BY 제거) 잘못된 결과의 위험이 되돌아오므로 피한다.

DBAtlas에서 열기 →

같은 데이터베이스의 다른 항목