1055 - SELECT リストの式 #1 が GROUP BY 句になく、非集計列が含まれています。

 Navicat プレミアム 16 バージョン

このエラーは、新しいバージョンの MySQL で有効になっているデフォルト モードが原因ですONLY_FULL_GROUP_BY。つまり、 GROUP BY ステートメントの SELECT リストにはグループ化関数または集計関数のみを含めることができ、他の列を含めることはできません。senior_two.score.student_idまた、クエリ ステートメントにグループ化も集計もされていない列があるため、MySQL はこのエラーを報告しました。

元の文:

SELECT * FROM score LEFT JOIN course on score.course_id=course.course_id GROUP BY course.course_name

実行後のエラー:

1055 - SELECT リストの式 #1 は GROUP BY 句になく、GROUP BY 句の列に機能的に依存していない非集計列 'senior_two.score.student_id' を含んでいます。これは sql_mode=only_full_group_by と互換性がありません

この問題を解決するには 2 つの方法があります。

  1. クローズONLY_FULL_GROUP_BYモード。:mysql> インターフェイスに次のコマンドを入力して、インターフェイスを閉じます。
SET sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY','');

        2.senior_two.score.student_idカラムを GROUP BY リストに追加して、MySQL がカラムの処理方法を認識できるようにします。たとえば、クエリを次のように変更します。

SELECT senior_two.score.student_id, AVG(senior_two.score.score) AS avg_score FROM senior_two.score GROUP BY senior_two.score.student_id;

このクエリは学生 ID ごとにグループ化し、各学生の平均スコアを計算します。このようにすると、MySQL は上記のエラーを報告しなくなります。

おすすめ

転載: blog.csdn.net/m0_61615803/article/details/130076452