塚原 大祐

2014.06.17

SQLで複数行をまとめて取りたいとき( GROUP_CONCAT )

ワールドカップはじまりましたね!
普段はサッカーを観戦したりはしないのですが、お祭り的な雰囲気が好きで見てしまいます。
おひさしぶりです。塚原です。

健忘禄も兼ねて mysqlの GROUP_CONCAT を紹介します。
同一のカテゴリーのデータが複数行にあるものを1カテゴリー1行で出したいなんてことあると思います。

例えば、以下のアンケートで複数回答したようなデータがあるとします。

2014-06-14_210053

そんなデータを「ユーザごと回答を抜き出してよ」なんてときに便利なのが GROUP_CONCAT です。

これを実行した結果が以下です。

2014-06-14_210659

「いやいや、答えはIDでほしいんじゃないんだよ」と言われた場合は、ちょっと応用してこちら

2014-06-14_214621

こんなマスタデータがあったとすると

こんな風にすると以下のように出せます。

2014-06-14_213105

更に文字列を連結する CONCAT の機能も使えるのでカンマ区切れば文字を付け加えることもできます。

2014-06-14_214458

他にも DISTINCT を使って重複をなくすとか ORDER BY で並び替えもできます。
プログラム内で使うことはあまりないかもしれませんが、ちょっと抜き出して見てみたいなんてときに非常に役立ちます。

SQL、組み方もいろいろですが、まだまだ知らない機能もたくさんありますね。。。
徐々にお勉強して幅を広げていきたいと思います!
それではまた!

塚原 大祐

名の由来は「天祐」。 そのままではおこがましいので 天の字から1本棒をとればと叔父がつけてくれたもの。 名に恥じぬよう世の中の助けとなるものを創り出していきたいです。 for Facebookのサポート・運用開発の部隊に所属しています。

RELATION ENTRY

塚原 大祐の記事一覧へ

▶︎