MySQL 5.7.5 で「GROUP BY を使用しない集約クエリ」エラーが発生するのはなぜですか?

Patricia Arquette
リリース: 2024-10-25 21:37:29
オリジナル
641 人が閲覧しました

Why Am I Getting the

SQL エラー: "GROUP BY を使用しない集約クエリ"

MySQL 5.7.14 では、既存のクエリに影響を与える可能性のある変更が導入されています「SQLSTATE[42000]: 構文エラーまたはアクセス違反: 1140 GROUP BY を使用しない集約クエリです。」というエラーで失敗します。このエラーは、SELECT 句で列 (COUNT() など) を集計するが、GROUP BY 句に非集計列を含めない場合に発生します。

エラーが発生する理由

MySQL の以前のバージョンでは、GROUP BY を使用せずにカラムを集約することができました。ただし、データの整合性を確保するために、MySQL 5.7.5 以降のバージョンでは「strict」または「only_full_group_by」SQL モードが強制され、すべての非集計カラムが GROUP BY 句に含まれる必要があります。 h3>解決策のオプション

この問題を解決するには 2 つのオプションがあります:

1. MySQL 設定の変更

GROUP BY 句の外側で非集計カラムを許可する従来の動作をデフォルトにするように MySQL の設定を変更できます。これは業界のベスト プラクティスに反し、不正確な結果につながる可能性があるため、お勧めできません。

2.クエリを修正

GROUP BY 句に非集計列を含めるようにクエリを変更します。例:

ルールの例外

<code class="sql">SELECT id, password, COUNT(id) AS count
FROM users
WHERE email = :email
GROUP BY id, password
LIMIT 1</code>
ログイン後にコピー

GROUP BY 句から非集計カラムを除外することは、MySQL 5.7.5 でも許可されていることに注意してください。非集計列が単一の値に制限されている場合は、それ以降のバージョン。たとえば、WHERE 句のフィルターは列を 1 つの行に制限するため、GROUP BY 句から安全に除外できます。

以上がMySQL 5.7.5 で「GROUP BY を使用しない集約クエリ」エラーが発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!