MySQL 集計関数: GROUP BY Quandary
MySQL では、GROUP BY を明示的に定義せずに、SELECT ステートメントで集計関数を使用できます。 SQL Server などの他のデータベース システムではエラーが発生する可能性があります。この動作により、MySQL がなぜそのようなクエリの実行を許可するのかという疑問が生じます。
MySQL の設計
MySQL では、拡張機能として GROUP BY 句を使用せずに、SELECT リスト内の集計関数を許可しています。 SQL 標準に準拠します。グループ化を行わない場合、データベースは単一の不定グループを想定し、そのグループに対して任意の名前値を選択できます。この動作により、テーブル全体にわたるデータの集計が容易になります。
クエリの例
次のクエリを考えてみましょう。
SELECT name, MAX(age) FROM t;
GROUP BY なし
ONLY_FULL_GROUP_BY 設定
MySQL バージョン 5.7.5 以降ONLY_FULL_GROUP_BY 設定が導入されました。これは、GROUP BY 句のない集計関数の処理を制御します。この設定を有効にするには、集計関数の使用に GROUP BY 句が存在する必要があります。
結論
GROUP BY 句なしで集計関数を許可する MySQL の動作により、次のような柔軟性が提供されます。テーブル全体のデータを集計します。ただし、ONLY_FULL_GROUP_BY 設定を使用すると、SQL 標準への厳密な準拠を強制して、集計をより制御できます。
以上がGROUP BY 句なしで MySQL 集計関数を使用できるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。