집 >데이터 베이스 >MySQL 튜토리얼 >MySQL이 'GROUP BY에 없습니다' 오류를 발생시키는 이유는 무엇입니까?
SELECT COUNT와 SELECT를 GROUP BY와 결합하는 MySQL 쿼리를 실행하면 다음과 같습니다. 결과 개수에 차이가 발생할 수 있습니다. 그 이유는 종종 "'field_name'이 GROUP BY에 없습니다"라는 악명 높은 오류 메시지 때문입니다.
오류를 이해하기 위해 문제를 자세히 분석해 보겠습니다.
GROUP BY는 하나 이상의 지정된 열 값을 기준으로 행을 그룹화합니다. 우리의 경우 GROUP BY를 사용한 쿼리에는 GROUP BY 이름과 같은 절이 있습니다. 이는 고유한 이름 값이 있는 행만 그룹화된다는 의미입니다.
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!