복붙노트

[SQL] MySQL은 # 1140 - GROUP 컬럼의 혼합

SQL

MySQL은 # 1140 - GROUP 컬럼의 혼합

아마도 누군가가 아래의 오류에 도움이 되거 수 있다면 안녕 궁금. 는 SQL 로컬 잘 작동하지만 난 원격 오류 아래하여 얻을.

SQL 쿼리 :

   SELECT COUNT(node.nid), 
          node.nid AS nid, 
          node_data_field_update_date.field_update_date_value AS node_data_field_update_date_field_update_date_value
     FROM node node
LEFT JOIN content_type_update node_data_field_update_date ON node.vid = node_data_field_update_date.vid
    WHERE node.type IN ('update')
ORDER BY node_data_field_update_date_field_update_date_value DESC

MySQL은 말했다 :

해결법

  1. ==============================

    1.당신이 GROUP BY 절을 지정해야하기 때문에 열이있는 버전이 집계 함수를 사용하지 않는 동안 집계 함수를 사용하여 단일 열을하지 않습니다 작동하는 이유입니다. 다음은 쿼리가 유사 보일 것입니다 무엇 :

    당신이 GROUP BY 절을 지정해야하기 때문에 열이있는 버전이 집계 함수를 사용하지 않는 동안 집계 함수를 사용하여 단일 열을하지 않습니다 작동하는 이유입니다. 다음은 쿼리가 유사 보일 것입니다 무엇 :

       SELECT COUNT(n.nid), 
              n.nid, 
              ctu.field_update_date_value
         FROM NODE n
    LEFT JOIN CONTENT_TYPE_UPDATE ctu ON ctu.vid = n.vid
        WHERE n.type IN ('update')
     GROUP BY n.nid, ctu.field_update_date_value
     ORDER BY field_update_date_value DESC
    

    쉽게 읽을 수 - 나는 짧은 것들에 대한 테이블 별칭을 변경했습니다. 여기에 문제의 고기는 다음과 같습니다

       SELECT n.nid,
              COUNT(n.fake_example_column),                
              ctu.field_update_date_value
          ...
     GROUP BY n.nid, ctu.field_update_date_value
    

    나는 필요 BY 그룹이 정의하는 방법을 강조하기 위해 가짜 열을 사용하는 예를 변경. 당신이 집계 함수에 배치하지 않고 참조하는 열이 GROUP BY에서 언급 할 것이다. 나는 MySQL이 때문에해야 말하는 내가 그 지원의 알고 있어요에만 DB를 사용자가 선택적으로 생략 열 수있는 BY 그룹 - 쿼리를 MySQL을 작동하지만, 다른 DBS에 대한 변경없이 이식 할 수없는 이유에 대해 많은 SO 질문이 있습니다. 분명히 귀하의 경우, 당신은 여전히 ​​적어도 하나에서 정의해야합니다.

  2. ==============================

    2.귀하의 서버가 아마 ONLY_FULL_GROUP_BY 켜져있다. 당신이 중 하나를 끄거나하여 그룹에 선택한 각 필드를 추가 할 수 있습니다.

    귀하의 서버가 아마 ONLY_FULL_GROUP_BY 켜져있다. 당신이 중 하나를 끄거나하여 그룹에 선택한 각 필드를 추가 할 수 있습니다.

  3. ==============================

    3.Laravel 프레임 워크에서 config 폴더에 데이터베이스 파일에 '엄격한'=> 거짓을 설정하면이 문제를 해결할 것입니다.

    Laravel 프레임 워크에서 config 폴더에 데이터베이스 파일에 '엄격한'=> 거짓을 설정하면이 문제를 해결할 것입니다.

  4. ==============================

    4.그러나 최신 SQL에서 u는 너무함으로써 그룹으로 선택의 모든 열을 사용합니다.

    그러나 최신 SQL에서 u는 너무함으로써 그룹으로 선택의 모든 열을 사용합니다.

    laravel 프로젝트에서이 당신은 config-> 데이터베이스에 사용

    '엄격한'=> 거짓,

    및 PHP는 장인 설정을 실행하여 명확한 설정 캐시 : 캐시를.

    나는 당신을 위해 더 도움이 될 것이라 생각합니다.

  5. ==============================

    5.그것은 기본에 다시 제거 :

    그것은 기본에 다시 제거 :

       SELECT COUNT( node.nid ) 
         FROM node node
    LEFT JOIN content_type_update node_data_field_update_date ON node.vid = node_data_field_update_date.vid
        WHERE node.type IN ('update')
     ORDER BY node_data_field_update_date.field_update_date_value DESC
    
  6. ==============================

    6.나는 5.0의 이전 버전에서 동일한 문제가 있습니다. 새로운 5.5 버전에서는 작동한다!

    나는 5.0의 이전 버전에서 동일한 문제가 있습니다. 새로운 5.5 버전에서는 작동한다!

    SELECT COUNT(*), id
    FROM `cities` AS `c`
    
  7. from https://stackoverflow.com/questions/1244169/mysql-1140-mixing-of-group-columns by cc-by-sa and MIT license