MySQL エラー #1140: GROUP カラムの混合
このエラーは、MySQL クエリで GROUP 関数と非 GROUP カラムが混在している場合に発生します。 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;
このクエリは、 「update」タイプのノードの数を取得し、各ノードのノード ID (nid) と更新日を取得します。ただし、GROUP 関数 COUNT() と、SELECT リストの非 GROUP 列 nid および node_data_field_update_date_field_update_date_value が混在しています。
このエラーを解決するには、MySQL サーバーの ONLY_FULL_GROUP_BY 設定を無効にするか、クエリをグループ化するように変更します。非グループ列:
ONLY_FULL_GROUP_BY の無効化:
mysql> SET GLOBAL ONLY_FULL_GROUP_BY = OFF;
クエリへのグループ化の追加:
SELECT COUNT(node.nid) AS node_count, 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, node_data_field_update_date.field_update_date_value ORDER BY node_data_field_update_date_field_update_date_value DESC;
以上がMySQL エラー #1140: GROUP カラムの混合を解決する方法?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。