MySQL エラー: SELECT リストが SQL_MODE=ONLY_FULL_GROUP_BY と互換性がありません
クエリ内に非集計カラムを含む SELECT ステートメントを含むクエリを実行する場合グループ化句を使用すると、MySQL は式が GROUP にないことを示すエラーを返す場合があります。 BY句。これは、SQL_MODE が ONLY_FULL_GROUP_BY に設定されている場合に発生する可能性があります。その場合、SELECT リスト内のすべての非集計列が GROUP BY 句に含まれている必要があります。
解決策 1: SQL_MODE=ONLY_FULL_GROUP_BY
解決策の 1 つは、次のコマンドを発行して、SQL_MODE=ONLY_FULL_GROUP_BY を設定します:
SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));
これにより、エラーなしでクエリを実行できるようになります。
解決策 2: すべての非集計列を GROUP に含めるBY 句
もう 1 つの解決策は、すべての非集計列を GROUP BY 句に含めます。これを行うには、クエリを変更して次の内容を含めます。
SELECT * FROM `tbl_customer_pod_uploads` WHERE `load_id` = '78' AND `status` = 'Active' GROUP BY `proof_type`, `id`
これにより、すべての非集計列が GROUP BY 句に含まれるようになり、クエリがエラーなしで実行されます。
解決策 3: アグリゲーター関数を使用する
ベスト プラクティスとして、次の使用を検討してください。すべての列を選択するのではなく、非集計列に対して集計関数を使用します。たとえば、各証明タイプのレコード数のみが必要な場合は、クエリを次のように変更できます:
SELECT `proof_type`, COUNT(*) AS `total_records` FROM `tbl_customer_pod_uploads` WHERE `load_id` = '78' AND `status` = 'Active' GROUP BY `proof_type`
以上がMySQL エラーを解決する方法: SELECT リストは SQL_MODE=ONLY_FULL_GROUP_BY と互換性がありません?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。