sql_mode 옵션 중 only_full_group_by로 인해 생긴 이슈

2023. 9. 13. 09:03· DB/MySQL
목차
  1. ✏️ 에러 해결 방법
  2. 1. Query 수정
  3. 2. sql_mode 옵션 중 only_full_group_by 비활성화
반응형

참고 링크 : https://velog.io/@devjooj/MySQL-EP-1.-GROUP-BY

 

[MySQL] GROUP BY 왜 안 되는거야?

갑자기 잘 작동하던 프로시저가 sql_mode 활성화 후 error가 났다. 왜 갑자기?!

velog.io

입사 후 처음 DB관련 작업을 하다가 

GROUP BY 함수를 쓰는데 처음보는 에러가 떠서 찾아보다가 잘 정리된 글이 있어서 업로드

Expression #2 of SELECT list is not in GROUP BY clause and contains 
nonaggregated column '컬럼명' which is not functionally dependent on columns in GROUP BY clause; 
this is incompatible with sql_mode=only_full_group_by

 

위에 링크에선 3가지 방법을 설명해준다

 

✏️ 에러 해결 방법

해당 에러를 해결하기 위해서는 두가지의 해결 방법이 있다.

1. Query 수정

 SELECT
 	 o.custid
	, c.name
    , MAX(o.payment)
 FROM orders AS o, customers AS c
 WHERE o.custid = c.custid
 GROUP BY o.custid;

위 예시는 GROUP BY로 o.custid를 그룹화하여 SELECT하는 쿼리이다.
이렇게 작성하면 위의 에러가 나올 것이다.

뭐가 잘못된 걸까?

GROUP BY를 사용할 경우, SELECT 할 수 있는 컬럼은

  1. GROUP BY에 나열된 컬럼 (여기서는 o.custid)
  2. COUNT(), AVG(), SUM()과 같은 집계함수

위의 두가지 경우에만 사용할 수 있다.

그렇다면 다시 위의 쿼리로 돌아갔을 때 잘못된 점이 보일 것이다.

GROUP BY에 선언되지 않은 컬럼, 집계함수도 아닌 컬럼인 c.name으로 인해 문제가 발생한 것이다.

문제를 해결하기 위해서는

해결1. 아래와 같이 비집계 컬럼인 c.name을 GROUP BY에 추가

SELECT
 	 o.custid
	, c.name
    , MAX(o.payment)
 FROM orders AS o, customers AS c
 WHERE o.custid = c.custid
 //GROUP BY o.custid 
 GROUP BY o.custid, c.name

해결2. 어떠한 값이 와도 상관이 없다면 ANY_VALUE() 함수 사용

SELECT
 	 o.custid
	, ANY_VALUE(c.name)
    , MAX(o.payment)
 FROM orders AS o, customers AS c
 WHERE o.custid = c.custid
 GROUP BY o.custid

2. sql_mode 옵션 중 only_full_group_by 비활성화

  • 실제로 해결방법으로 공식문서에도 비활성화하라고 나와있다.
    여기까지 MySQL 공식문서에 나와있는 GROUP BY 규칙이었다.

 

나 같은 경우 기본적으로 세팅되어있는 sql_mode 옵션을 건드릴 수 없으니 2번 방식은 선택하지 못했고

해결1 방식으로 했었는데

해결2 방식을 이번에 알게되서 다시 보기 위해 포스팅
상황에 맞게 선택해서 작업하면 될 것 같다

728x90
반응형

'DB > MySQL' 카테고리의 다른 글

MySQL 다운로드  (0) 2023.05.08
  1. ✏️ 에러 해결 방법
  2. 1. Query 수정
  3. 2. sql_mode 옵션 중 only_full_group_by 비활성화
'DB/MySQL' 카테고리의 다른 글
  • MySQL 다운로드
불타는고굼이
불타는고굼이
잡동사니 끄적끄적
불타는 고구미 담벼락잡동사니 끄적끄적
반응형
250x250
불타는고굼이
불타는 고구미 담벼락
불타는고굼이
전체
오늘
어제
  • 공부 및 정리 (235)
    • Language (10)
      • Java (2)
      • Javascript (6)
      • Python (1)
      • C,C++ (1)
    • Web (42)
      • Tomcat (2)
      • Spring (11)
      • Node (4)
      • react (5)
      • NestJS (2)
      • Elastic Search (1)
      • etc (14)
      • error (3)
    • AI (17)
      • AI 동향 (2)
      • LLM관련 (1)
      • RAG (5)
      • LangChain (8)
      • Llamaindex (1)
    • Tools (16)
      • eclipse (1)
      • STS (3)
      • Visual Studio Code (8)
      • git | github (3)
      • Notion (0)
      • etc (1)
    • DB (3)
      • MySQL (2)
      • MSSQL (1)
    • Android (24)
      • Kotlin (24)
      • etc (0)
    • Algorithm & 자료구조 (15)
      • 백준 (4)
      • 프로그래머스 (1)
      • 기초수학 (4)
      • 자료구조 (6)
    • Image Processing (16)
      • 세팅 (1)
      • 예제 (6)
      • Python2Cpp (8)
      • YOLO (1)
    • 취미 (80)
      • photo (5)
      • food (48)
      • travel (6)
      • walk&run (16)
      • ETC (5)
    • ETC (7)
      • 제로베이스 (3)
      • 멀티캠퍼스 (1)
      • 패스트캠퍼스 INNERCIRCLE (3)

블로그 메뉴

  • 홈
  • 태그

공지사항

인기 글

태그

  • #경주여행 #황리단길카페 #경주카페추천 #향미사 #경주가볼만한곳 #첨성대 #대릉원 #경주핫플 #경주감성카페 #황리단길맛집 #경주말거리 #경주핫스팟
  • #홍대맛집
  • Spring
  • #선유도맛집 #선유도역맛집 #선유도돈까스 #선유도회식 #내일식당 #내일다이닝 #대파안심돈까스 #돈까스맛집 #서울맛집추천 #영등포맛집 #혼밥추천 #회식장소추천 #맛집블로그 #블로그후기 #먹스타그램 #푸드로그 #맛집탐방
  • #나가노팝업
  • #치이카와굿즈
  • #홍대캐릭터샵
  • #레트로카페
  • 개발자 #백엔드공부 #백엔드스쿨
  • #부트캠프후기 #개발자성장기 #코딩프로젝트 #프로그래밍교육 #1차프로젝트완료 #팀워크 #신입개발자일상 #개발자블로그
  • #팝플리
  • #농담곰
  • #홍대팝업스토어
  • #속초맛집 #속초문어국밥 #문어국밥 #문어비빔국수 #속초해장국 #강원도맛집 #속초여행맛집 #속초로컬맛집 #문어요리 #속초밥집
  • #속초중앙시장 #속초시장맛집 #속초오징어순대 #속초튀김 #속초닭강정 #중앙닭강정 #속초떡볶이 #강원도시장 #속초간식투어 #속초여행코스
  • #프레퍼스 #다이어트식사 #헬스식단 #샐러드맛집 #다이어트맛집 #다이어트플레이트 #프레퍼스후기 #운동식단 #건강한한끼 #맛있는다이어트
  • #고미푸딩
  • #나가노굿즈
  • #보광정 #수육런 #남산러닝 #러닝이벤트 #단백질런 #러닝후기 #수육맛집 #러닝인증 #남산순환로 #러너들의맛집
  • #홍대나가노
  • 제로베이스
  • #ai프로젝트 #dify #llm아키텍처 #ai서비스기획 #노코드ai #ai멘토링 #ai입문 #딥러닝 #머신러닝 #pm특강 #프로젝트관리 #초보ai개발자 #ai교육후기 #ai캠프후기 #ai기반서비스 #생성형ai #ai툴활용 #데이터기반서비스 #ai직무전환 #it비전공자 </p>
  • #선유도역맛집 #돈웍 #서울고기맛집 #1인고기세트 #목살구이 #된장찌개맛집 #영등포구맛집 #혼밥맛집 #삼겹전문점 #덮밥맛집 #서울혼밥추천
  • 백엔드
  • #elasticsearch설치 #dockerelasticsearch #검색엔진 #로컬서버구축 #elasticstack #검색솔루션 #elasticsearch보안
  • #나가노마켓
  • #일본캐릭터
  • #경주맛집 #황리단길맛집 #향화정 #경주한옥맛집 #경주육회물회 #꼬막비빔밥 #해물파전맛집 #경주가볼만한곳 #경주맛집추천 #경주현지맛집 #경주여행코스 #경주로컬맛집 #한식전문점 #블로그후기 #먹스타그램 #맛집기록 #경주한옥식당 #황리단길한식
  • java
  • #하루런 #harurun #하남미사경정공원 #임시완 #러닝대회후기 #5km마라톤 #하루야채 #커플런 #마라톤참가후기 #건강마라톤

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.0
불타는고굼이
sql_mode 옵션 중 only_full_group_by로 인해 생긴 이슈
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.