>데이터 베이스 >MySQL 튜토리얼 >MySQL이 'GROUP BY에 없습니다' 오류를 발생시키는 이유는 무엇입니까?

MySQL이 'GROUP BY에 없습니다' 오류를 발생시키는 이유는 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-12-05 12:15:13329검색

Why Does MySQL Throw an

MySQL의 "is't in GROUP BY" 오류: 포괄적인 설명

SELECT COUNT와 SELECT를 GROUP BY와 결합하는 MySQL 쿼리를 실행하면 다음과 같습니다. 결과 개수에 차이가 발생할 수 있습니다. 그 이유는 종종 "'field_name'이 GROUP BY에 없습니다"라는 악명 높은 오류 메시지 때문입니다.

오류를 이해하기 위해 문제를 자세히 분석해 보겠습니다.

MySQL 및 GROUP BY

GROUP BY는 하나 이상의 지정된 열 값을 기준으로 행을 그룹화합니다. 우리의 경우 GROUP BY를 사용한 쿼리에는 GROUP BY 이름과 같은 절이 있습니다. 이는 고유한 이름 값이 있는 행만 그룹화된다는 의미입니다.

SQL92 및 SQL99 및 MySQL

SQL92에서는 원래 SELECT 절의 모든 열이 GROUP BY 절에도 있어야 했습니다. 그러나 SQL99에서는 이 제한을 완화하여 GROUP BY 열에 기능적으로 종속된 열이 SELECT 절에 포함될 수 있도록 허용했습니다.

MySQL은 기본적으로 "부분 그룹화 기준"을 허용합니다. GROUP BY 절에 명시적으로 포함되지 않은 SELECT 절. 그러나 이는 비결정적인 결과로 이어질 수 있습니다.

해결책

문제를 해결하려면 SELECT 절의 모든 열이 GROUP BY 절의 일부이거나 기능적으로 GROUP BY 절에 종속되어 있는지 확인하세요. 그것. 이 예에서는 유형, 언어 및 코드를 GROUP BY 절에 추가해야 합니다.

SELECT `name`, `type`, `language`, `code` 
FROM `users` 
WHERE `verified` = '1' 
GROUP BY `name`, `type`, `language`, `code` 
ORDER BY `count` DESC LIMIT 0, 25

전체 그룹별 대 부분 그룹별

MySQL은 @ 설정도 제공합니다. 전체 그룹을 적용하도록 설정할 수 있는 @sql_mode:

set @@sql_mode='ONLY_FULL_GROUP_BY';

이 설정을 사용하면 전체 그룹이 없는 모든 쿼리가 오류가 발생합니다.

위 내용은 MySQL이 'GROUP BY에 없습니다' 오류를 발생시키는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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