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 つのオプションがあります:
GROUP BY 句の外側で非集計カラムを許可する従来の動作をデフォルトにするように MySQL の設定を変更できます。これは業界のベスト プラクティスに反し、不正確な結果につながる可能性があるため、お勧めできません。
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 サイトの他の関連記事を参照してください。