집계 없이 GROUP BY 쿼리에 대한 MySQL의 독특한 접근 방식
Oracle 및 SQL Server와 같은 데이터베이스 시스템과 달리 MySQL은 집계 함수를 수반하지 않는 GROUP BY
절을 허용합니다. 이는 이러한 쿼리가 일반적으로 오류를 발생시키는 표준 SQL 동작과 크게 대조됩니다. 핵심 질문은 MySQL이 결과 세트에서 집계되지 않은 열을 어떻게 처리하는가입니다.
MySQL은 각 그룹의 집계되지 않은 열에서 임의의 값을 선택합니다. 이 값은 항상 그런 것은 아니지만 종종 해당 그룹 내에서 처음으로 발견되는 값입니다. 이 동작의 근거는 열이 집계되지 않거나 그룹화의 일부가 아닌 경우 SELECT
목록에 포함되는 것이 잠재적으로 임의적이라는 가정에서 비롯됩니다. 따라서 MySQL은 단순히 대표값을 반환합니다.
ANSI 준수 및 only_full_group_by
설정
GROUP BY
에 대한 이러한 완화된 접근 방식은 ANSI SQL 표준에서 벗어납니다. MySQL은 only_full_group_by
SQL 모드를 제공하여 이 문제를 해결합니다. 이 모드를 활성화하면 엄격한 ANSI SQL 규정 준수가 적용되어 집계되지 않은 모든 열이 GROUP BY
절에 포함되어야 합니다. 이를 통해 예측 가능하고 표준을 준수하는 쿼리 결과가 보장됩니다.
MySQL이 이 접근 방식을 선택한 이유
MySQL에서 집계되지 않은 GROUP BY
쿼리를 허용하기로 한 결정은 성능과 사용 편의성을 우선시합니다. MySQL 5.0 매뉴얼에 설명된 대로 이 디자인은 쿼리 처리를 단순화하고 계산 오버헤드를 줄이며 보다 간단한 사용자 경험을 제공합니다. 명시적인 집계 작업의 복잡성 없이 효율적인 데이터 검색이 가능합니다.
위 내용은 MySQL은 GROUP BY 쿼리에서 집계되지 않은 열을 어떻게 처리합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!