>  Q&A  >  본문

SQL_MODE=only_full_group_by: SELECT 목록이 GROUP BY 절에 없으며 집계되지 않은 열을 포함합니다....호환되지 않습니다.

Windows PC에서 WAMP 서버와 함께 MySQL 5.7.13을 사용하고 있습니다

이 쿼리를 실행할 때 문제가 발생합니다

으아악

항상 이런 오류가 발생해요

SELECT 목록의 표현식 #1은 GROUP BY 절에 없으며 GROUP BY 절의 열에 기능적으로 종속되지 않는 비집계 열 "returntr_prod.tbl_customer_pod_uploads.id"를 포함합니다. 이는 sql_mode와 일치하지 않습니다. =only_full_group_by 호환 가능

가장 좋은 해결책을 알려주실 수 있나요?

이 결과가 필요해요

으아악


P粉850680329P粉850680329348일 전572

모든 응답(2)나는 대답할 것이다

  • P粉099000044

    P粉0990000442023-10-11 11:07:33

    MySql 엔진에는 시스템 변수 ONLY_FULL_GROUP_BY가 있습니다.

    Mysql 버전 5.7.5부터: ONLY_FULL_GROUP_BYSQL 모드가 기본적으로 활성화되어 있습니다

    버전 5.7.5 이전 : 기본적으로 활성화되어 있지 않습니다 ONLY_FULL_GROUP_BY.

    ONLY_FULL_GROUP_BY SQL 模式(从版本 5.7.5 开始默认启用),MySQL 将拒绝选择列表、HAVING 条件或ORDER BY 列表指的是非聚合列,这些列既未在 GROUP BY SQL 모드가 활성화된 경우(버전 5.7.5부터 기본적으로 활성화됨) MySQL은 비집계 열을 참조하는 선택 목록,

    HAVING 조건 또는

    ORDER BY 목록을 거부합니다.

    GROUP BY 절에 이름이 지정되지도 않고 기능적으로 종속되지도 않습니다.

    문제를 해결하려면 솔루션(아래 3개 중 1개) 중 하나를 사용하세요.

    (1) PHPMyAdmin ONLY_FULL_GROUP_BY

    Disabled

    : 모드sql_mode phpMyAdmin을 사용하는 경우 아래 스크린샷과 같이

    설정을 변경하세요.

    sql mode变量并从值中删除ONLY_FULL_GROUP_BY

    sql 모드 변수를 편집하고 값에서 text

    를 제거합니다.

    또는

    (2) SQL/명령 프롬프트ONLY_FULL_GROUP_BY

    Disable : 다음 명령을 실행하여 모드를 비활성화합니다.

    으아악

    또는 SELECT *

    (3) ONLY_FULL_GROUP_BY을 사용하지 마세요.

    SELECT 查询中使用相关列。相关意味着列,它们要么出现在 group by 子句中,要么出现在具有聚合函数的列(MAXMIN 모드를 비활성화하지 마세요. 하지만 <代码>In ,

    SUM
    ,

    COUNT 등)

    point(1) OR point(2)중요 지침

    [mysqld] 部分中的 /etc/mysql/my.cnf

    point(1) 또는 point(2)
    를 사용하여 변경한 내용은 영구적으로 설정되지 않으며 재부팅할 때마다 복원됩니다.

    따라서 MySQL을 다시 시작해도 변경 사항이 유지되도록 구성 파일(예: /etc/mysql/my.cnf 섹션의 /etc/mysql/my.cnf[mysqld])에서 설정해야 합니다.

    구성 파일: sql_mode OR sql-mode/etc/mysql/my.cnf

    변수 이름ONLY_FULL_GROUP_BY:

    OR

    sql-mode sql_mode값에서

    🎜🎜 단어를 제거하고 파일을 저장하세요. 🎜 🎜🎜참고🎜: 구성 파일에서 🎜 변수를 찾을 수 없는 경우 파일 끝에 다음 두 줄을 삽입하세요. 🎜 으아악

    회신하다
    0
  • P粉909476457

    P粉9094764572023-10-11 00:45:13

    이 명령을 통해 MySQL에서 SQL 모드를 변경하면 쉽게 해결할 수 있습니다.

    으아아아

    이건 나에게도 효과가 있다.. 내 프로젝트에 이와 같은 쿼리가 많았기 때문에 이것을 사용했습니다. 그래서 이 SQL 스키마를 only_full_group_by

    로 변경했습니다.

    또는 SELECT 문에서 지정한 GROUP BY 절의 모든 열만 포함합니다. sql_mode는 활성화된 상태로 남아 있을 수 있습니다.

    감사합니다...:-)


    업데이트 날짜: 2023년 7월 14일

    SQL 스키마를 변경하는 것이 하나의 솔루션이지만 구조화된 쿼리 언어에서 가장 좋은 방법은 여전히 ​​모든 (SELECT * ...) 열을 선택하지 않고 대신 아래 @Tim Biegeleisen과 같이 그룹화 열에 집계 함수를 사용하는 것입니다. https://stackoverflow.com/a/41887524/3602846

    에 대한 답변

    회신하다
    0
  • 취소회신하다