MySQL에서 ONLY_FULL_GROUP_BY 모드가 활성화되어 있을 때, GROUP BY 절에서 집계 함수 없이 포함되지 않은 컬럼을 SELECT 절에 사용할 경우, 다음과 같은 오류가 발생할 수 있습니다.
... which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by ...
아래 예시 쿼리에서는 fish_name이 GROUP BY 절에 포함되지 않아 오류가 발생합니다.
SELECT
COUNT(*) AS fish_count,
n.fish_name -- 오류 원인
FROM
fish_name_info AS n
JOIN
fish_info AS i ON n.fish_type = i.fish_type
GROUP BY
n.fish_type
ORDER BY
fish_count DESC;
이 오류를 해결하려면, SELECT 절에 사용된 모든 컬럼을 GROUP BY 절에 추가해야 합니다. 다음과 같이 fish_name을 GROUP BY 절에 포함시키면 해결됩니다.
SELECT
COUNT(*) AS fish_count,
n.fish_name
FROM
fish_name_info AS n
JOIN
fish_info AS i ON n.fish_type = i.fish_type
GROUP BY
n.fish_type, n.fish_name
ORDER BY
fish_count DESC;
'MySQL' 카테고리의 다른 글
MySQL에서 소수점 이하를 버리고 정수 몫 구하는 방법 (0) | 2025.01.12 |
---|