MySQLの5.7以上からは
sql_mode=only_full_group_by が初期設定で有効になっており、
これが有効になっているとこれまで問題なくGroup byできていたものがエラーを吐いたりする。
設定を変えれば解決するのだが、今後のことを考えると厳密にしといた方が良いなと思うので、直したい。
例えばSELECT
id, name
FROM
sample GROUP
BY
name;
これだとエラーになる。
しかし、SELECT
id, name
FROM
sample GROUP
BY
id,name;
こうすることでエラーにならなくなる。
セレクトで指定しているもの全てをGroup byに書けば良い。
ただ、集計関数のCOUNTやSUMなどがSELECTでフィールド指定されていてもこちらは書かなくて良い。
サブクエリもあった際はGroup byに書かないといけないのでエイリアスをつけてあげると良い。
またJOINした際もSELECTでフィールド指定していればそちらもGroup byに書かないといけない。
コメント