本文へスキップ
BecomeCoder

SQLのエラー · エラー8

ERROR 1055: 集約されていない列を SELECT した ― GROUP BY の誤り

GROUP BY でまとめたのに、集約関数SUM/COUNT など)も GROUP BY も付けていない列を SELECT に書くと出ます(MySQL の既定モード ONLY_FULL_GROUP_BY の例)。

出るコード

SELECT customer_id, amount FROM orders GROUP BY customer_id;   -- amount は集約もGROUP BYもされていない

エラーメッセージ

ERROR 1055 (42000): Expression #2 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'shop.orders.amount' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

直し方

SELECT に書く列は「GROUP BY に書いた列」か「集約関数に通した列」のどちらかにします。この例なら SELECT customer_id, SUM(amount) FROM orders GROUP BY customer_id; とします。