ホームページ > データベース > mysql チュートリアル > MySQL の「isn't in GROUP BY」エラーを解決するにはどうすればよいですか?

MySQL の「isn't in GROUP BY」エラーを解決するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-12-20 04:56:18
オリジナル
426 人が閲覧しました

How to Resolve MySQL's

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート