SQLSTATE[42000]: Syntax error or access violation: 1055 Expression #2 of SELECT list is not in GROUP BY clause and contains nonaggregated column …
【環境】
MySQL: 5.7.18
MySQL: 5.7.18
経緯
GROUP BY を用いたら、下記エラーが出た。
Error: SQLSTATE[42000]: Syntax error or access violation: 1055 Expression #2 of SELECT list is not in GROUP BY clause and contains nonaggregated column ‘dbnam.tablename.columnname’ which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
原因
Google 先生に質問すると、一杯出てきた。。。
MySQL 5.7 から仕様変更になったのが原因だそうな。
sql_mode=only_full_group_by
この部分。
my.cnf のデフォルトで sql_mode に only_full_group_by が追加されたため
GROUP BY を用いたときは、一意である値しか SELECT できなくなったとのこと。
解決策1
my.cnf の sql_mode から only_full_group_by を外してしまえば、5.6 までと同じように動作するとのこと。
解決策2
- GROUP BY で指定したカラム
- 集約関数を利用しているカラム
- 全て同値であるカラム(?)
これらについては、SELECT できるので
それだけを指定する。
参考サイト
Qiita:脱!ゆるふわMySQL(2015-12-16)