which is not functionally dependent on columns in group by clause

Views:
8
Category:
Post
Posted on:
2023. 10. 14.

SQL ONLY_FULL_GROUP_BY

* 상황

회사에서는 Sequelize ORM 환경에서 로우쿼리와 Op, 프로시져를 통해

쿼리를 날리며 group을 할때는 전혀 발생하지 않았는데 쿼리를 알맞게 작성

하였음에도 오류가 발생 하였다.

which is not functionally dependent on columns in group by clause...

오류내용

* 원인

mysql 5.7 버전 이후 sql_mode에 추가된 설정으로 바른 쿼리를 작성할 수 있도록

추가 된 것 같다. group_by에 명시되지 않은 컬럼을 선택하는 것이 의미적으로

정확하지 않고 표준 쿼리 작성에 어긋난다는 것이다. 여태 바르지 못한 쿼리를 작성

하고 학습해 왔던 것이다...

* 해결 방법

구글링으로 많은 해결 방안이 나와 따로 적지는 않겠다.

  1. 그룹바이에 명시하지 않은 컬럼을 명시한다.
  2. sql_mode를 수정한다.
  3. 서브쿼리에서 그루핑한 컬럼을 선택한다.
  4. 그룹바이에 명시되지 않은 컬럼에 집계함수를 사용한다.

이 정도의 해결 방법이 있는것 같다.

# SQL ONLY_FULL_GROUP_BY

### * 상황

회사에서는 Sequelize ORM 환경에서 로우쿼리와 Op, 프로시져를 통해 

쿼리를 날리며 group을 할때는 전혀 발생하지 않았는데 쿼리를 알맞게 작성

하였음에도 오류가 발생 하였다.

> which is not functionally dependent on columns in group by clause...
>
>오류내용


### * 원인
mysql 5.7 버전 이후 sql_mode에 추가된 설정으로 바른 쿼리를 작성할 수 있도록 

추가 된 것 같다. group_by에 명시되지 않은 컬럼을 선택하는 것이 의미적으로 

정확하지 않고 표준 쿼리 작성에 어긋난다는 것이다. 여태 바르지 못한 쿼리를 작성

하고 학습해 왔던 것이다...

### * 해결 방법 
구글링으로 많은 해결 방안이 나와 따로 적지는 않겠다.

1. 그룹바이에 명시하지 않은 컬럼을 명시한다.
2. sql_mode를 수정한다.
3. 서브쿼리에서 그루핑한 컬럼을 선택한다.
4. 그룹바이에 명시되지 않은 컬럼에 집계함수를 사용한다.

이 정도의 해결 방법이 있는것 같다.