> 데이터 베이스 > MySQL 튜토리얼 > MySQL에서 \'SELECT 목록의 표현식 #1이 GROUP BY에 없습니다\' 오류를 방지하려면 어떻게 해야 합니까?

MySQL에서 \'SELECT 목록의 표현식 #1이 GROUP BY에 없습니다\' 오류를 방지하려면 어떻게 해야 합니까?

Patricia Arquette
풀어 주다: 2024-11-27 18:51:11
원래의
291명이 탐색했습니다.

How Can I Avoid

MySQL ANY_VALUE에서 GROUP BY 오류 방지

MySQL 데이터베이스로 작업할 때, 특히 버전에서 그룹화 작업과 관련된 오류가 발생하는 것이 일반적입니다. 5.7 이전. 이러한 문제 중 하나는 "SELECT 목록의 표현식 #1이 GROUP BY에 없습니다."라는 오류입니다. 이 오류는 GROUP BY 쿼리에서 집계되지 않은 열을 검색하려고 할 때 발생합니다.

MySQL 5.7에서 ANY_VALUE 함수는 비집계 열에서 단일 임의 값을 검색할 수 있도록 하여 이 문제에 대한 편리한 솔루션을 제공합니다. 그룹 내에서 집계된 열입니다. 그러나 이 기능은 5.6과 같은 이전 버전의 MySQL에서는 사용할 수 없습니다.

한 가지 해결 방법은 GROUP BY 작업에 대해 더 엄격한 요구 사항을 적용하는 ONLY_FULL_GROUP_BY SQL 모드를 일시적으로 비활성화하는 것입니다. 이는 다음 쿼리를 사용하여 수행할 수 있습니다.

SET SESSION sql_mode = '';
로그인 후 복사

SQL 모드를 비활성화한 후 ANY_VALUE 함수를 사용하는 쿼리는 MySQL 5.6에서 오류 없이 실행됩니다. 그러나 이 해결 방법을 사용하면 집계되지 않은 열이 쿼리 결과에 반환될 수 있으므로 예측할 수 없는 결과가 발생할 수 있다는 점에 유의하는 것이 중요합니다.

보다 안정적인 솔루션은 SQL 쿼리 자체를 수정하여 명시적으로 집계하는 것입니다. 원하는 열을 선택하거나 테이블에서 특정 행을 선택합니다. 예를 들어, 예제 쿼리의 이미지 테이블에 자동 증가 ID 열이 있는 경우 다음 쿼리는 예측 가능한 이미지가 표시된 국가당 하나의 행을 반환합니다.

SELECT c.id, c.name, i.*
FROM countries c
LEFT JOIN (
  SELECT MIN(id) id, country_id
  FROM images
  GROUP BY country_id
) first ON c.id = first.country_id
LEFT JOIN images i ON first.id = i.id
로그인 후 복사

위 내용은 MySQL에서 \'SELECT 목록의 표현식 #1이 GROUP BY에 없습니다\' 오류를 방지하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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