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 중국어 웹사이트의 기타 관련 기사를 참조하세요!