ホームページ >データベース >mysql チュートリアル >GROUP BY を使用しない MySQL 集計関数: その理由と方法?

GROUP BY を使用しない MySQL 集計関数: その理由と方法?

DDD
DDDオリジナル
2024-11-06 05:42:02591ブラウズ

MySQL Aggregate Functions Without GROUP BY: Why and How?

GROUP BY を使用しない MySQL 集計関数: その理由と方法?

次の場合にエラーが発生する他のリレーショナル データベース管理システム (RDBMS) とは異なります。集計関数は GROUP BY 句なしで SELECT リストに表示されますが、MySQL ではそれが許可されています。この動作は開発者の興味をそそり、次の質問につながりました:

なぜ MySQL では GROUP BY なしの集計関数が許可されるのですか?

答え:

MySQL の設計哲学により、SQL 標準を超えた拡張機能が可能になります。 GROUP BY を使用せずに集計関数を許可することも、そのような拡張機能の 1 つです。

SELECT col1,col2,sum(col3) FROM tbl1 のようなクエリを実行すると、MySQL はすべての非集計カラムによって行を効果的にグループ化します (この例ではcase、col1、col2)。次に、単一の不定グループの集計関数の結果 (col3 の合計) を返します。

MySQL の以前のバージョンでは、デフォルトでこの動作が許可されていました。ただし、MySQL 5.7.5 以降では、より厳格な SQL 準拠を強制し、GROUP BY のない集計関数を使用したクエリを禁止するために、ONLY_FULL_GROUP_BY SQL モードが導入されました。このモードは、必要に応じて有効または無効にできます。デフォルトでは、MySQL バージョン 8.0 以降で有効になっています。

追加の注意事項:

  • MySQL でのグループ別処理のドキュメントに、これに関する詳細が記載されています。
  • ONLY_FULL_GROUP_BY SQL モードは、不必要な計算を回避することで他の RDBMS との互換性を確保し、パフォーマンスを向上させるのに役立ちます。

以上がGROUP BY を使用しない MySQL 集計関数: その理由と方法?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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