> 데이터 베이스 > MySQL 튜토리얼 > MySQL이 성공하는데 PostgreSQL GROUP BY 쿼리가 실패하는 이유는 무엇입니까?

MySQL이 성공하는데 PostgreSQL GROUP BY 쿼리가 실패하는 이유는 무엇입니까?

DDD
풀어 주다: 2025-01-18 09:56:12
원래의
718명이 탐색했습니다.

Why Does My PostgreSQL GROUP BY Query Fail While MySQL Succeeds?

PostgreSQL의 엄격한 GROUP BY 절과 오류 처리

PostgreSQL에서 SELECT * FROM the_table GROUP BY col2과 같은 쿼리를 실행하면 ""the_table.col3" 열은 GROUP BY 절에 나타나거나 집계 함수에 사용되어야 합니다."라는 오류가 발생합니다. 이는 PostgreSQL이 SQL 표준을 엄격하게 준수하여 SELECT 목록의 모든 열이 GROUP BY 절에 포함되거나 집계 함수의 일부가 되도록 요구하기 때문입니다.

집계 함수: 솔루션

SUM(), MIN(), MAX(), AVG(), COUNT() 등의 집계 함수는 값 집합에서 단일 값을 계산합니다. PostgreSQL 오류를 수정하려면 GROUP BY

에 없는 열에 집계 함수를 적용해야 합니다.

MySQL의 비표준 동작

MySQL의 GROUP BY에 대한 보다 관대한 처리는 비표준 확장입니다. GROUP BY 절에 없는 집계되지 않은 열을 선택할 수 있지만 선택한 값은 비결정적입니다. MySQL은 기본적으로 이러한 열에 대해 각 그룹에서 임의의 값을 선택합니다. 이로 인해 예측할 수 없고 일관되지 않은 결과가 발생할 수 있습니다.

PostgreSQL의 더욱 엄격한 접근 방식은 일관되고 재현 가능한 쿼리 결과를 보장합니다.

PostgreSQL 쿼리 수정

PostgreSQL 쿼리를 수정하려면 col3(및 GROUP BY 절에 없는 다른 열)에서 집계 함수를 사용하세요. 예를 들면 다음과 같습니다.

<code class="language-sql">SELECT col2, MIN(col3) AS col3, MIN(col1) AS col1
FROM the_table
GROUP BY col2;</code>
로그인 후 복사

이 수정된 쿼리는 MIN()을 사용하여 col3에 의해 정의된 각 그룹에 대해 col2의 최소값을 선택합니다. 원하는 결과에 따라 적절한 집계 함수(예: MAX(), AVG())를 선택해야 합니다.

위 내용은 MySQL이 성공하는데 PostgreSQL GROUP BY 쿼리가 실패하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿