MySQLのGroup byエラー

スポンサーリンク

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に書かないといけない。

コメント

タイトルとURLをコピーしました