MySQLで、
select * from `line_table` where `prefCd`=13 group by `lineCd`,`lineName`
というSQLクエリーを実行すると、
こんなエラーが出てしまいました。
ORDER BY clause is not in GROUP BY clause and contains nonaggregated column 'xxxxxx' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
これは、MySQL5.7で「sql_mode(SQLモード)」のデフォルトの設定が変更になっためです。
具体的には、
「ONLY_FULL_GROUP_BY」が設定されるようになった為に、
GROUP BY句に設定していないカラムを、SELECTするカラムには設定出来なくなりました。
出来れば、sql_modeの設定を変更はしたくないです。
それに、
selectで取得するカラムに「*」を設定しているようなSQL自体も本来は良くないです。
※本来は必要なカラムだけを取得するようにSELECTするSQLにした方がいいです。
なので、SQLを組み替えることにしました。
と言っても、
今回は難しくはなく、
select `lineCd`,`lineName` from `line_table` where `prefCd`=13 group by `lineCd`,`lineName`
とすればいいだけです。
この記事へのコメントはありません。