ホームページ >データベース >mysql チュートリアル >MySQL が「GROUP BY にありません」エラーをスローするのはなぜですか?
SELECT COUNT と SELECT を GROUP BY と組み合わせる MySQL クエリを実行すると、結果の数に不一致が発生する可能性があります。この背後にある理由は、多くの場合、「'field_name' は GROUP BY にありません」という悪名高いエラー メッセージです。
エラーを理解するために、問題を分析してみましょう:
GROUP BY は、指定された 1 つ以上の列の値に基づいて行をグループ化します。この例では、GROUP BY を使用したクエリに GROUP BY name などの句が含まれています。これは、一意の名前値を持つ行のみがグループ化されることを意味します。
SQL92 では、当初、SELECT 句内のすべての列が GROUP BY 句にも含まれる必要がありました。ただし、SQL99 ではこの制限が緩和され、機能的に GROUP BY カラムに依存するカラムを SELECT 句に含めることが可能になりました。
MySQL では、デフォルトで「部分グループ化」が許可されます。つまり、 GROUP BY 句に明示的に含まれていない SELECT 句。ただし、これにより非決定的な結果が生じる可能性があります。
この問題を解決するには、SELECT 句内のすべての列が GROUP BY 句の一部であるか、GROUP BY 句に機能的に依存していることを確認します。それ。この例では、タイプ、言語、コードを GROUP BY 句に追加する必要があります。
SELECT `name`, `type`, `language`, `code` FROM `users` WHERE `verified` = '1' GROUP BY `name`, `type`, `language`, `code` ORDER BY `count` DESC LIMIT 0, 25
MySQL には @ という設定も用意されています。 @sql_mode、次のようにして完全なグループを適用するように設定できます。
set @@sql_mode='ONLY_FULL_GROUP_BY';
この設定では、完全なグループ化はエラーになります。
以上がMySQL が「GROUP BY にありません」エラーをスローするのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。