MySQL 집계 함수: GROUP BY 문제
MySQL에서는 GROUP BY를 명시적으로 정의하지 않고도 SELECT 문에서 집계 함수를 사용할 수 있습니다. 절, SQL Server와 같은 다른 데이터베이스 시스템에서는 오류가 발생할 수 있습니다. 이 동작은 MySQL이 그러한 쿼리 실행을 허용하는 이유에 대한 의문을 제기합니다.
MySQL 디자인
MySQL은 확장으로 GROUP BY 절 없이 SELECT 목록에서 집계 함수를 허용합니다. SQL 표준에. 그룹화하지 않으면 데이터베이스는 불확실한 단일 그룹을 가정하고 해당 그룹에 대해 모든 이름 값을 선택할 수 있습니다. 이 동작을 사용하면 전체 테이블에서 데이터를 더 쉽게 집계할 수 있습니다.
예제 쿼리
다음 쿼리를 고려하세요.
SELECT name, MAX(age) FROM t;
GROUP BY 없이 절을 사용하면 MySQL은 처음 발견된 이름 값과 전체 테이블의 최대 age 값이 포함된 단일 행을 반환합니다.
ONLY_FULL_GROUP_BY 설정
MySQL 버전 5.7.5 이상 GROUP BY 절 없이 집계 함수의 처리를 제어하는 ONLY_FULL_GROUP_BY 설정을 도입했습니다. 이 설정을 활성화하려면 집계 함수 사용에 GROUP BY 절이 있어야 합니다.
결론
GROUP BY 절 없이 집계 함수를 허용하는 MySQL의 동작은 다음에 대한 유연성을 제공합니다. 전체 테이블에 걸쳐 데이터를 집계합니다. 그러나 ONLY_FULL_GROUP_BY 설정을 사용하면 집계를 더욱 제어하기 위해 SQL 표준을 더욱 엄격하게 준수할 수 있습니다.
위 내용은 GROUP BY 절 없이 MySQL 집계 함수를 사용할 수 있는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!