집 >데이터 베이스 >MySQL 튜토리얼 >집계 함수 없이 MySQL의 GROUP BY 동작을 예측할 수 없는 이유는 무엇입니까?
집계 함수가 없는 MySQL GROUP BY
절의 비결정적 동작
GROUP BY
절에 집계 함수 없이 MySQL 쿼리에서 SELECT
절을 사용하면 해당 동작이 비결정적일 수 있습니다. 이는 MySQL이 성능상의 이유로 GROUP BY
절에서 열을 생략하는 것을 허용하기 때문입니다.
그러나 이 생략은 생략된 열이 각 그룹 내의 모든 행에서 동일한 값을 갖는 경우에만 작동합니다. 그렇지 않은 경우, 예에 표시된 것처럼 서버는 그룹에서 임의의 값을 자유롭게 선택할 수 있습니다. 결과적으로 반환 값은 정의되지 않습니다.
예측 가능한 결과를 보장하려면 GROUP BY
절에 집계되지 않은 모든 열을 포함하는 것이 좋습니다. 또한 유사한 상황에서 예측할 수 없는 동작이 발생할 수 있으므로 일반적으로 *
와일드카드 문자를 사용하여 테이블의 모든 열을 선택하는 것은 권장되지 않습니다.
MySQL 문서에는 "이 기능을 사용할 때 각 그룹의 모든 행은 GROUP BY
섹션에서 생략된 열에 대해 동일한 값을 가져야 합니다."라고 명시되어 있습니다. 이 조건이 충족되지 않으면 쿼리 결과가 정의되지 않습니다. .
따라서 GROUP BY
절에 포함된 열을 신중하게 고려하고 그룹화 내에서 다른 값이 포함된 열을 생략하지 않도록 하세요.
위 내용은 집계 함수 없이 MySQL의 GROUP BY 동작을 예측할 수 없는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!