ホームページ > データベース > mysql チュートリアル > mysql 5.7 `only_full_group_by`エラーを解決する方法は?

mysql 5.7 `only_full_group_by`エラーを解決する方法は?

Linda Hamilton
リリース: 2025-01-25 02:51:09
オリジナル
610 人が閲覧しました

How to Resolve the MySQL 5.7 `only_full_group_by` Error?

only_full_group_by MySQL 5.7 のエラー

MySQL バージョン 5.7 では、only_full_group_by モードが導入されました。このモードでは、SELECT ステートメントで集計されていないすべてのカラムを GROUP BY ステートメントに含める必要があります。このエラーは、クエリの SELECT ステートメントに、GROUP BY ステートメントに現れない未集計の列が含まれている場合に発生します。

この問題を解決するには 2 つの方法があります:

方法 1: 不足している列を GROUP BY

に追加する

欠落している列 mod_users_groups.group_idGROUP BY ステートメントに追加します:

<code class="language-sql">SELECT 
  g.group_id AS 'value', 
  g.group_name AS 'text' 
FROM mod_users_groups g
LEFT JOIN mod_users_data d ON g.group_id = d.group_id 
WHERE g.active = 1 
  AND g.department_id = 1 
  AND g.manage_work_orders = 1 
  AND g.group_name != 'root' 
  AND g.group_name != 'superuser' 
GROUP BY 
  g.group_name, 
  g.group_id 
HAVING COUNT(d.user_id) > 0 
ORDER BY g.group_name</code>
ログイン後にコピー

これにより、SELECT ステートメントで集計されていないすべての列が GROUP BY ステートメントに確実に含まれるようになり、エラーが排除されます。

方法 2: 集計関数を使用する

欠落している列がグループ化に関連していない場合は、選択する前に集計関数を使用してデータを要約することもできます。たとえば、group_name が実際に一意である場合、mod_users_groups.group_id を次の集計関数に置き換えることができます:

<code class="language-sql">MIN(mod_users_groups.group_id)</code>
ログイン後にコピー

これにより、一意の各 group_name に対して最小の group_id が返され、SELECT ステートメントには集計列のみが含まれることが保証されます。

以上がmysql 5.7 `only_full_group_by`エラーを解決する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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