MySQLのGroup By句には別名を使うべきだ

select文でgroup byする時は、select句の中でグルーピング関数を使ってないとこをそのまんまgroup byにブチ込めば良いと覚えている人は多いと思う。例えば下記のように。

しかし、これだと保守性が悪い。プログラム変更時は、select句とgroup by句が常に一致するように修正しなければならないからだ。うっかりしてselect句だけを変更してしまうと、意図通りの結果が返ってこなくなる。

それに対応するため、group by句には別名を使うことを徹底すべきだ。例えば、下記のように。

こうすれば、何かあった時の変更個所はselect句だけで済む。

特に、MySQLでは変なグルーピングをしてもエラーを吐いてくれないからタチが悪い。気を付けろ!

テスト用に、上記テーブルのダンプも載せておく。各自練習してみてくれ。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください