[MySQL]ONLY_FULL_GROUP_BY 모드

Haeng·2024년 11월 14일

SQL

목록 보기
3/5
SELECT * FROM mart.card GROUP BY 고객등급

위와 같이 GROUP BY 함수를 사용하면 아래와 같은 오류가 출력된다.

  • 이는 MySQL에서 GROUP BY 쿼리의 동작을 더 엄격하게 제한하는 SQL 모드인, ONLY_FULL_GROUP_BY 모드 때문이다.

  • ONLY_FULL_GROUP_BY 모드에서는 GROUP BY 절에 포함되지 않은 컬럼을 SELECT 문에서 사용할 수 없다.

  • 이 모드의 주요 특징과 목적은 다음과 같다:
    1. 표준 SQL 준수: ONLY_FULL_GROUP_BY 모드는 SQL 표준을 더 엄격히 준수
    2. 모호한 쿼리 방지: GROUP BY 절에 포함되지 않은 비집계 컬럼을 SELECT 절에서 사용할 수 없게함
    3. 데이터 일관성 보장: 그룹화된 결과에서 어떤 값을 선택해야 할지 모호한 상황을 방지
    4. 오류 발생: 이 모드가 활성화되면, GROUP BY 규칙을 위반하는 쿼리에 대해 오류를 발생
    5. 기본 활성화: MySQL 5.7 이상 버전에서는 기본적으로 활성화되어 있음

  • 해결방안:
    1. GROUP BY 절에 모든 컬럼을 포함시킵니다.
    2. 집계 함수(예: MAX, MIN, AVG 등)를 사용하여 그룹화되지 않은 컬럼을 처리합니다.
    3. ONLY_FULL_GROUP_BY 모드를 비활성화합니다. (권장되지 않음)

  • 아직 SQL을 배우는 단계여서 이 모드를 끄는게 나은지 키는게 나은지 판단이 안서기 때문에, 일다는 권장 사항 대로 이 모드를 킨 채로 진행할 예정...

profile
행행행행행행행행

0개의 댓글