ホームページ > データベース > mysql チュートリアル > MySQL エラーを解決する方法: SELECT リストは SQL_MODE=ONLY_FULL_GROUP_BY と互換性がありません?

MySQL エラーを解決する方法: SELECT リストは SQL_MODE=ONLY_FULL_GROUP_BY と互換性がありません?

Linda Hamilton
リリース: 2024-12-30 21:54:11
オリジナル
356 人が閲覧しました

How to Resolve MySQL Error: SELECT List Incompatible with SQL_MODE=ONLY_FULL_GROUP_BY?

MySQL エラー: SELECT リストが SQL_MODE=ONLY_FULL_GROUP_BY と互換性がありません

クエリ内に非集計カラムを含む SELECT ステートメントを含むクエリを実行する場合グループ化句を使用すると、MySQL は式が GROUP にないことを示すエラーを返す場合があります。 BY句。これは、SQL_MODE が ONLY_FULL_GROUP_BY に設定されている場合に発生する可能性があります。その場合、SELECT リスト内のすべての非集計列が GROUP BY 句に含まれている必要があります。

解決策 1: SQL_MODE=ONLY_FULL_GROUP_BY

解決策の 1 つは、次のコマンドを発行して、SQL_MODE=ONLY_FULL_GROUP_BY を設定します:

SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));
ログイン後にコピー

これにより、エラーなしでクエリを実行できるようになります。

解決策 2: すべての非集計列を GROUP に含めるBY 句

もう 1 つの解決策は、すべての非集計列を GROUP BY 句に含めます。これを行うには、クエリを変更して次の内容を含めます。

SELECT *
FROM `tbl_customer_pod_uploads`
WHERE `load_id` = '78' AND
      `status` = 'Active'
GROUP BY `proof_type`, `id`
ログイン後にコピー

これにより、すべての非集計列が GROUP BY 句に含まれるようになり、クエリがエラーなしで実行されます。

解決策 3: アグリゲーター関数を使用する

ベスト プラクティスとして、次の使用を検討してください。すべての列を選択するのではなく、非集計列に対して集計関数を使用します。たとえば、各証明タイプのレコード数のみが必要な場合は、クエリを次のように変更できます:

SELECT `proof_type`, COUNT(*) AS `total_records`
FROM `tbl_customer_pod_uploads`
WHERE `load_id` = '78' AND
      `status` = 'Active'
GROUP BY `proof_type`
ログイン後にコピー

以上がMySQL エラーを解決する方法: SELECT リストは SQL_MODE=ONLY_FULL_GROUP_BY と互換性がありません?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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