>데이터 베이스 >MySQL 튜토리얼 >MySQL에서 \'GROUP BY 절에 없는 SELECT 목록의 표현\' 오류가 발생하는 이유는 무엇이며 어떻게 해결할 수 있습니까?

MySQL에서 \'GROUP BY 절에 없는 SELECT 목록의 표현\' 오류가 발생하는 이유는 무엇이며 어떻게 해결할 수 있습니까?

Barbara Streisand
Barbara Streisand원래의
2024-11-28 07:53:14307검색

Why Does MySQL Throw a

MySQL에서 "GROUP BY 절에 없는 SELECT 목록의 표현식" 오류를 해결하는 방법

MySQL에서 쿼리를 실행하면 sql_mode와 관련된 오류가 발생할 수 있는 경우가 있습니다. 환경. 이러한 오류 중 하나는 다음과 같습니다.

#1055 - Expression of SELECT list is not in GROUP BY clause and contains nonaggregated column this is incompatible with sql_mode=only_full_group_by

이 오류는 GROUP BY 절에 포함되지 않고 집계되지 않은(예: SUM, COUNT 등을 사용하여) 쿼리의 SELECT 목록에 열이 포함된 경우 발생합니다. ). 이 문제를 해결하려면 GROUP BY 절에 집계되지 않은 열을 포함하거나 집계하도록 쿼리를 수정해야 합니다.

제공된 MySQL 쿼리에서:

select libelle, credit_initial, disponible_v, sum(montant) as montant
FROM fiche, annee, type
where type.id_type=annee.id_type and annee.id_annee=fiche.id_annee
and annee = year(current_timestamp)
GROUP BY libelle
order by libelle asc

비 집계 열 - 집계 열은 disponible_v입니다. 오류를 해결하려면 이를 GROUP BY 절에 추가하세요.

...
GROUP BY libelle, disponible_v
...

또는 SUM 또는 AVG와 같은 함수를 사용하여 disponible_v를 집계하세요.

...
GROUP BY libelle
HAVING SUM(disponible_v) > 0
...

8.0 이전 MySQL 버전의 경우 , MySQL 구성 파일 /etc/mysql/conf.d/mysql.cnf에서 sql_mode 설정을 조정해야 할 수도 있습니다. 다음 줄을 추가하세요.

[mysqld]
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

구성 파일을 변경한 후 MySQL을 다시 시작하세요.

위 내용은 MySQL에서 \'GROUP BY 절에 없는 SELECT 목록의 표현\' 오류가 발생하는 이유는 무엇이며 어떻게 해결할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.