ホームページ  >  記事  >  データベース  >  MySQL 5.7.14 で GROUP BY を使用しない集計クエリでエラーが発生するのはなぜですか?

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

Barbara Streisand
Barbara Streisandオリジナル
2024-11-01 03:39:02925ブラウズ

Why Do My Aggregate Queries Without GROUP BY Cause Errors in MySQL 5.7.14 ?

GROUP BY を使用しない集約クエリ: エラーと解決策について

以前のバージョンの MySQL では、集約クエリに対して GROUP BY 句を使用しないクエリがありました。関数 (COUNT() など) は、多くの場合、問題なく機能しました。ただし、MySQL 5.7.14 以降では、このようなクエリでエラーが発生する可能性があります:

SQLSTATE[42000]: Syntax error or access violation: 1140 In aggregated query without GROUP BY, expression #1 of SELECT list contains nonaggregated column [...]

このエラーは、非集計フィールドを必要とする他の RDBMS システムに合わせて MySQL のデフォルト動作が変更されたことに起因します。集計関数を使用する場合、SELECT 句に GROUP BY 句に含めます。

エラーへの対処:

このエラーを解決するには、次の 2 つのオプションがあります。

1. MySQL 設定の調整:

MySQL の設定を変更することで、従来の動作に戻すことができます。ただし、これは最適でないクエリの実践を永続させることになるため、通常は推奨されません。

2.クエリを修正します:

推奨される解決策は、GROUP BY 句に非集計列を含めるようにクエリを変更することです。たとえば、上記のクエリは次のように書き換えることができます:

SELECT id, password, COUNT(id) AS count 
FROM users 
WHERE email = :email 
GROUP BY id, password 
LIMIT 1

Exception in 5.7.5 :

MySQL バージョン 5.7.5 以降では、依然として非集計列が 1 つの値に制限されている場合 (WHERE 句でフィルターを使用するなど)、GROUP BY 句から非集計列を除外できます。この例外の詳細と例は、ここでご覧いただけます。

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。