Allied ArchitectsAllied ArchitectsEngineer Blog

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

2014/06/17 MySQL

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

健忘禄も兼ねて 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、組み方もいろいろですが、まだまだ知らない機能もたくさんありますね。。。
徐々にお勉強して幅を広げていきたいと思います!
それではまた!

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

RELATION ENTRY

PHPからParseでPush通知

PHPからParseでPush通知

2014/02/5 その他

年が明けたと思ったら、もう1月も終わり。。。 今年もあっという間なのだろうなと思いつつお問い合わせ対応に追われる毎日でございます。 おひさしぶりです。塚原です。 先ほど追われているとは書きましたが、お問い合わせばかりではく合間に開発もガッツリおこなってます。この前、スマホにPush通知...

続きを読む

DISTINCTとGROUP BY

DISTINCTとGROUP BY

2013/11/14 SQL

急に寒くなりましたね。お元気ですか? おひさしぶりです。塚原です。 さて、私事ではありますが、少し前からお仕事内容が少し変わりまして、 ガッシガシの機能開発から運用保守と改善を主とする開発をするようになりました。 他部署からの問い合わせにも対応するので あんなデ...

続きを読む

塚原 大祐の記事一覧へ

ページTOPへ