ホームページ >データベース >mysql チュートリアル >mysqlの「only_full_group_by」エラーを解決する方法は?
MySQL 5.7 の only_full_group_by
エラー: 詳細な説明と解決策
MySQL 5.7 で「SELECT リストの式 #1 が GROUP BY 句にありません」および「only_full_group_by」エラーが発生すると、混乱を招くことがあります。この記事は、この問題に光を当て、解決策を提供することを目的としています。
問題分析
MySQL 5.7 より前のバージョンでは、グループ内でこれらの列の値が異なる場合でも、GROUP BY 句に現れない列を SELECT リストに含めることができました。ただし、バージョン 5.7 では、これらの列が集計されている場合にのみこれを許可するようにデフォルトの動作が変更されました。これは、「only_full_group_by」モードによって強制されます。
問題は解決しました
このエラーは、クエリの SELECT リストに、GROUP BY 句の列に機能的な依存関係がない未集計の列が含まれていることを示します。この問題を解決するには、未集計の列を削除するか、GROUP BY 句に追加します。
推奨される解決策
この特定のクエリでは、「group_id」列を GROUP BY 句に追加して、すべての非集計列が GROUP 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_id, g.group_name HAVING COUNT(d.user_id) > 0 ORDER BY g.group_name</code>
その他の注意事項
複数テーブルのクエリでは、推奨される解決策で示されているように、テーブル名またはエイリアスで列名を修飾することが最善です。
「only_full_group_by」をオフにすることはお勧めできません。非集計列を任意に選択できるため、一貫性のない予測不可能な結果が生じる可能性があります。
以上がmysqlの「only_full_group_by」エラーを解決する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。