MySQL/SELECT句で使った関数の結果を使って GROUP BY する

MySQL/SELECT句で使った関数の結果を使って GROUP BY する

このような記述ができる

SELECT
    name,
    age,
    SUBSTR(name, 3) AS piyo
FROM
    hoge
GROUP BY
    piyo

もしここで name が taro, jiro, saburo, shiro, goro だったとすると。レコードは 3レコードにグルーピングされる。

普通の感覚ならば、GROUP BY でグルーピングした結果を SELECT で展開するというという思考をするが、 この記述方法では逆になっている。

これはつまり、GROUP BY したモノをどうせ SELECT でももう一度書くので書かなくていいようにショートカット記述ができるようになっているということだ。

この記述は標準的な SQL ではないっぽく、DB の種類によっては使えないものもあるようだ。

db/mysql/groupby_in_select_statment_function_result.txt · 最終更新: 2018-03-13 09:55 by ore