>데이터 베이스 >MySQL 튜토리얼 >MySQL 5.7.5에서 \'GROUP BY\ 없이 집계된 쿼리' 오류가 발생하는 이유는 무엇입니까?

MySQL 5.7.5에서 \'GROUP BY\ 없이 집계된 쿼리' 오류가 발생하는 이유는 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-10-25 21:37:29756검색

Why Am I Getting the

SQL 오류: "GROUP BY 없이 집계된 쿼리"

MySQL 5.7.14에는 기존 쿼리를 유발할 수 있는 변경 사항이 도입되었습니다. "SQLSTATE[42000]: 구문 오류 또는 액세스 위반: 1140 GROUP BY 없이 집계된 쿼리에서" 오류로 인해 실패합니다. 이 오류는 SELECT 절에서 열(예: COUNT())을 집계하고 GROUP BY 절에서 집계되지 않은 열을 포함하지 않을 때 발생합니다.

오류가 발생하는 이유

이전 버전의 MySQL에서는 GROUP BY를 사용하지 않고 열을 집계하는 것이 허용되었습니다. 그러나 데이터 무결성을 보장하기 위해 MySQL 5.7.5 이상 버전에서는 집계되지 않은 모든 열이 GROUP BY 절에 포함되어야 하는 "strict" 또는 "only_full_group_by" SQL 모드를 적용합니다.

< h3>솔루션 옵션

이 문제를 해결할 수 있는 두 가지 옵션이 있습니다:

1. MySQL 설정 변경

GROUP BY 절 외부에서 집계되지 않은 열을 허용하는 레거시 동작을 기본값으로 설정하도록 MySQL 구성을 수정할 수 있습니다. 이는 업계 모범 사례에 어긋나고 잘못된 결과를 초래할 수 있으므로 권장되지 않습니다.

2. 쿼리 수정

GROUP BY 절에 집계되지 않은 열을 포함하도록 쿼리를 수정하세요. 예:

<code class="sql">SELECT id, password, COUNT(id) AS count
FROM users
WHERE email = :email
GROUP BY id, password
LIMIT 1</code>

규칙 예외

GROUP BY 절에서 집계되지 않은 열을 제외하는 것은 MySQL 5.7.5에서 여전히 허용됩니다. 집계되지 않은 열이 단일 값으로 제한되는 경우 이후 버전. 예를 들어, WHERE 절의 필터는 열을 단일 행으로 제한하여 GROUP BY 절에서 해당 열을 제외해도 안전합니다.

위 내용은 MySQL 5.7.5에서 \'GROUP BY\ 없이 집계된 쿼리' 오류가 발생하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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