ホームページ >データベース >mysql チュートリアル >MySQL の「isn't in GROUP BY」エラーを解決するにはどうすればよいですか?
MySQL "isn't in GROUP BY" Error
このエラーは、クエリの SELECT 句に非集計カラムを含めると発生します。 group by 要件を満たさない GROUP BY 句を含むクエリ。この場合、タイプ、言語、コードが GROUP BY に含まれていないため、クエリ:
SELECT `name`, `type`, `language`, `code` FROM `users` WHERE `verified` = '1' GROUP BY `name` ORDER BY `count` DESC LIMIT 0, 25
によってエラーがトリガーされます。これを解決するには、すべての非集計列を要件ごとのグループに組み込む必要があります。
SELECT `name`, `type`, `language`, `code` FROM `users` WHERE `verified` = '1' GROUP BY `name`, `type`, `language`, `code` ORDER BY `count` DESC LIMIT 0, 25
SQL Group By Requirements
SQL92 では、参照されるすべての列がSELECT 句の集計関数の外側は、GROUP BY 句に含める必要があります。ただし、SQL99 ではこの要件が緩和され、これらのカラムは機能的に group by 句に依存する必要があると規定されています。
MySQL Group By Behavior
MySQL では部分的な group by by が許可されています。デフォルトでは、非決定的な結果が生じる可能性があります。たとえば、次のクエリについて考えてみましょう。
create table t (x int, y int); insert into t (x,y) values (1,1),(1,2),(1,3); select x,y from t group by x;
このクエリは、次の出力に示すように、x グループごとにランダムな y 値を返す可能性があります。
+------+------+ | x | y | +------+------+ | 1 | 1 | +------+------+
Preventing Partial Group By
この不確定な動作を防ぐには、@@sql_mode を次のように設定します。 'ONLY_FULL_GROUP_BY':
set @@sql_mode='ONLY_FULL_GROUP_BY'; select x,y from t group by x; ERROR 1055 (42000): 'test.t.y' isn't in GROUP BY
以上がMySQL の「isn't in GROUP BY」エラーを解決するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。