>데이터 베이스 >MySQL 튜토리얼 >GROUP BY가 없는 MySQL 집계 함수: 이유와 방법

GROUP BY가 없는 MySQL 집계 함수: 이유와 방법

DDD
DDD원래의
2024-11-06 05:42:02589검색

MySQL Aggregate Functions Without GROUP BY: Why and How?

GROUP BY가 없는 MySQL 집계 함수: 이유와 방법

다음 경우 오류를 발생시키는 다른 관계형 데이터베이스 관리 시스템(RDBMS)과 달리 집계 함수는 GROUP BY 절 없이 SELECT 목록에 나타나며 MySQL에서는 이를 허용합니다. 이 동작은 개발자의 흥미를 끌었고 다음 질문으로 이어졌습니다.

MySQL은 왜 GROUP BY 없이 집계 함수를 허용합니까?

답변:

MySQL의 설계 철학은 SQL 표준을 넘어서는 확장된 기능을 허용합니다. GROUP BY 없이 집계 함수를 허용하는 것이 그러한 확장 중 하나입니다.

SELECT col1,col2,sum(col3) FROM tbl1과 같은 쿼리를 실행할 때 MySQL은 집계되지 않은 모든 열을 기준으로 행을 효과적으로 그룹화합니다(이 예제에서는 케이스, col1 및 col2). 그런 다음 단일 불확정 그룹에 대한 집계 함수(col3의 합계)의 결과를 반환합니다.

이전 버전의 MySQL에서는 기본적으로 이 동작을 허용했습니다. 그러나 MySQL 5.7.5부터 ONLY_FULL_GROUP_BY SQL 모드가 도입되어 더 엄격한 SQL 규정 준수를 적용하고 GROUP BY가 없는 집계 함수를 사용한 쿼리를 허용하지 않습니다. 이 모드는 필요에 따라 활성화하거나 비활성화할 수 있습니다. 기본적으로 MySQL 버전 8.0 이상에서는 활성화되어 있습니다.

추가 참고 사항:

  • MySQL에서 처리하는 그룹에 대한 설명서에 이에 대한 자세한 내용이 나와 있습니다.
  • ONLY_FULL_GROUP_BY SQL 모드는 다른 RDBMS와의 호환성을 보장하고 불필요한 계산을 방지하여 성능을 향상시키는 데 도움이 됩니다.

위 내용은 GROUP BY가 없는 MySQL 집계 함수: 이유와 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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