[Error - MySQL] ‘SELECT list is not in GROUP BY clause and contains nonaggregated column ‘
상황
- 문제 링크
- WITH 문에서 GROUP BY 로 집계되지 않는 column을 SELECT문에서 사용
- 문제가 발생한 코드 예시
WITH ALTERED_FISH_INFO AS ( SELECT FISH_TYPE, CASE WHEN LENGTH < 10 OR LENGTH IS NULL THEN 10 ELSE LENGTH END AS LENGTH FROM FISH_INFO GROUP BY FISH_TYPE ) ...
- 위 코드에서는 FISH_TYPE만으로 GROUP BY했지만, LENGTH는 집계 함수(MAX, MIN, AVG 등) 없이 그대로 SELECT 되었기 때문에 sql_mode=only_full_group_by 환경에서는 오류가 발생함.
해결 방법
- GROUP BY에 명시된 컬럼만 SELECT에서 직접 사용할 수 있음
- → 나머지 컬럼은 집계 함수로 감싸거나,
- → 애초에 GROUP BY가 불필요하다면 제거해야 함