MySQL エラー #1140: 「GROUP カラムの混合」の問題について
MySQL エラー #1140、「GROUP カラムの混合 ( GROUP 列のない MIN()、MAX()、COUNT()、...) は次のようになります。 GROUP BY 句がない場合は不正です」というメッセージは、結果をグループ化せずにデータを集計しようとしたときに (たとえば、COUNT() などの関数を使用して) 発生します。これは、SQL クエリの SELECT 句に集計関数と非集計列が含まれており、GROUP BY 句が存在しない場合に発生する可能性があります。
問題の説明:
次の 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
このクエリをサーバーで ONLY_FULL_GROUP_BY 設定を有効にすると、エラー メッセージが表示されます:
#1140 - Mixing of GROUP columns (MIN(),MAX(),COUNT(),...) with no GROUP columns is illegal if there is no GROUP BY clause`
解決策:
この問題を解決するには、ONLY_FULL_GROUP_BY 設定を無効にするか、 SQL でのグループ化操作query.
only_full_group_by = 0
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') GROUP BY node.nid ORDER BY node_data_field_update_date_field_update_date_value DESC
これらの解決策のいずれかを適用すると、「GROUP 列の混合」エラーを回避して、集計データを正常に取得できます。
以上がMySQL エラー #1140:「GROUP 列の混合」を解決する方法?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。