ホームページ  >  記事  >  データベース  >  GROUP BY 句を使用しないと、集計を使用した MySQL 5.7 クエリが失敗するのはなぜですか?

GROUP BY 句を使用しないと、集計を使用した MySQL 5.7 クエリが失敗するのはなぜですか?

DDD
DDDオリジナル
2024-10-26 01:42:28909ブラウズ

Why is my MySQL 5.7  query with aggregation failing without a GROUP BY clause?

MySQL 5.7 では集計クエリには GROUP BY が必要です

Q: MySQL 5.7.14 にアップグレードした後、クエリの実行時にエラーが発生しましたGROUP BY 句なし。このクエリには、集計 (COUNT) と SELECT リスト内の非集計列が含まれており、以前は古いマシンで動作していました。

A: MySQL バージョン 5.7.5 以降では、デフォルトの動作が変更されました。データを集計するときに GROUP BY の使用を強制します。これは、SELECT 句で COUNT などの関数を使用する場合、すべての非集計列を GROUP BY 句に含める必要があることを意味します。

エラーを解決するには、2 つのオプションがあります:

  • MySQL 設定を変更します: MySQL 構成を調整して、GROUP BY を使用せずに集約クエリで非集約カラムを許可する以前の動作に戻します。
  • クエリを修正します: 次の例のように、GROUP BY 句にすべての非集計列が含まれるようにクエリを更新します。
<code class="sql">SELECT id, password, COUNT(id) AS count 
FROM users 
WHERE email = :email 
GROUP BY id, password 
LIMIT 1</code>

MySQL 5.7.5 以降には例外が存在することに注意することが重要です。 WHERE 句のフィルターを使用して、非集計列が単一の値に制限されている場合。このような場合、非集計列を GROUP BY 句から除外できます。詳細については、公式ドキュメントを参照してください。

以上がGROUP BY 句を使用しないと、集計を使用した MySQL 5.7 クエリが失敗するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。