[SQL] only_full_group_by 모드

DeMar_Beom·2023년 6월 21일
0

SQL

목록 보기
1/17
post-thumbnail

only_full_group_by

  • SQL로 프로젝트 자료를 보던 중에 group by를 사용하자 아래와 같은 오류가 발생
  • 쿼리 문법상이나 집계 대상에 문제가 있던 점이 아니라 오류를 확인하던 중 only_full_group_by모드라는 기능을 발견

오류 현상 및 해석

Error Code: 1055. Expression #3 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'mytest.match_0604.kills' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

  • only_full_group_by SQL모드가 sql에서 enableed 상태로 설정되어 있어 GROUP BY에 있지 않은 nonaggregated column이 참조되는 query 문을 거부
  • 이 모드는 group by 절에서 그룹화되지 않은 열에 대한 집계 함수를 사용할 때 발생하는 비 호환성을 나타남

only_full_group_by 모드란?

only_full_group_by 모드는 데이터의 일관성을 유지하기 위해 도입된 엄격한 모드이며, 데이터베이스의 일관성과 정확성을 보장하기 위한 규칙

해결방법

1. 집계 함수를 사용하는 열을 GROUP BY 절에 추가

2. SQL mode 설정

  • SHOW VARIABLES LIKE 'SQL_MODE'; 명령어를 입력하여 sql 현재 모드를 파악하고 값을 복사

  • SET SESSION sql_mode 의 값으로 only_full_group_by를 삭제 후 재설정

0개의 댓글