GROUP BY を使用しない MySQL 集計関数: その理由と方法
MySQL では、GROUP BY を指定せずに SELECT リストで集計関数を使用できます。 SQL Server などの他の RDBMS とは異なります。この動作は予想外に見えるかもしれませんが、実際には意図的な設計上の選択です。
GROUP BY なしで集計関数が使用される場合、MySQL は結果セット全体を 1 つのグループとして扱います。これは、集計関数がクエリで指定されたテーブル全体またはサブセットに対して単一の値を返すことを意味します。
たとえば、クエリ SELECT col1,col2,sum(col3) FROM tbl1; Col1 と Col2 の最初の値と、col3 のすべての値の合計を含む 1 行を返します。この動作は、データをグループ化せずに概要統計を計算する必要があるシナリオで役立ちます。
GROUP BY を使用しない集計関数の動作は、ONLY_FULL_GROUP_BY サーバー SQL モードを使用して変更できます。デフォルトでは、このモードは 5.7.5 より前の MySQL バージョンでは無効になっています。ただし、GROUP BY を使用せずに集計関数を禁止するように有効にすることもできます。
ONLY_FULL_GROUP_BY を有効にするには、MySQL 構成ファイル (通常は my.cnf) に次の行を追加します。
sql-mode=ONLY_FULL_GROUP_BY
Once有効にすると、MySQL は GROUP BY を使用せずに集計関数を使用するクエリに対してエラーをスローします。これは、データの整合性を確保し、不正確な結果を防ぐのに役立ちます。
以上がMySQL で GROUP BY を使用せずに集計関数を使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。