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 以降で有効になっています。
追加の注意事項:
以上がGROUP BY を使用しない MySQL 集計関数: その理由と方法?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。