>데이터 베이스 >MySQL 튜토리얼 >MySQL 오류 #1140: 'GROUP 열 혼합'을 해결하는 방법?

MySQL 오류 #1140: 'GROUP 열 혼합'을 해결하는 방법?

Linda Hamilton
Linda Hamilton원래의
2024-12-18 08:03:10862검색

How to Resolve MySQL Error #1140:

MySQL 오류 #1140: "GROUP 열 혼합" 문제 이해

MySQL 오류 #1140, "GROUP 열 혼합( GROUP 열이 없는 MIN(), MAX(), COUNT(), ...)는 다음과 같은 경우 불법입니다. no GROUP BY 절"은 결과를 그룹화하지 않고 데이터를 집계하려고 시도할 때(예: COUNT()와 같은 함수 사용) 발생합니다. 이는 SQL 쿼리의 SELECT 절에 집계 함수와 비집계 열이 포함되어 있고 GROUP BY 절이 없는 경우 발생할 수 있습니다.

문제 설명:

다음 SQL 쿼리는 이 문제를 예시합니다.

SELECT COUNT(node.nid), node.nid AS nid, node_data_field_update_date.field_update_date_value AS node_data_field_update_date_field_update_date_value
FROM node node LEFT JOIN content_type_update node_data_field_update_date ON node.vid = node_data_field_update_date.vid
WHERE node.type IN ('update')
ORDER BY node_data_field_update_date_field_update_date_value DESC

이 쿼리를 서버에서 ONLY_FULL_GROUP_BY 설정을 활성화하면 오류 메시지가 나타납니다.

#1140 - Mixing of GROUP columns (MIN(),MAX(),COUNT(),...) with no GROUP columns is illegal if there is no GROUP BY clause`

해결책:

이 문제를 해결하려면 ONLY_FULL_GROUP_BY 설정을 비활성화하거나 SQL의 그룹화 작업 query.

  • ONLY_FULL_GROUP_BY 비활성화: 이는 MySQL 구성 파일을 변경하고 다음 매개변수를 설정하여 수행할 수 있습니다.
only_full_group_by = 0
  • 그룹화 시행: 그룹 추가 쿼리에 대한 BY 절을 사용하면 문제가 해결됩니다. 이 경우, node.nid와 같은 하나 이상의 필드에 그룹화를 적용하여 집계 함수(COUNT())가 그룹화된 데이터 내에서만 적용되도록 할 수 있습니다. 수정된 쿼리는 다음과 같습니다.
SELECT COUNT(node.nid), node.nid AS nid, node_data_field_update_date.field_update_date_value AS node_data_field_update_date_field_update_date_value
FROM node node LEFT JOIN content_type_update node_data_field_update_date ON node.vid = node_data_field_update_date.vid
WHERE node.type IN ('update')
GROUP BY node.nid
ORDER BY node_data_field_update_date_field_update_date_value DESC

이 솔루션 중 하나를 적용하면 "GROUP 열 혼합" 오류를 우회하고 집계된 데이터를 성공적으로 검색할 수 있습니다.

위 내용은 MySQL 오류 #1140: 'GROUP 열 혼합'을 해결하는 방법?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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