Programming

【MySQL】複数の検索結果を1行にまとめる方法

2019/10/27

MySQLでの検索において、複数の検索結果がある場合に、その結果を1行にまとめたい時ありますよね?

例えば

ID(id) カテゴリ名(category)
1 りんご
2 りんご
3 みかん
1 バナナ

とある時にID1で普通に検索をすると

ID(id) カテゴリ名(category)
1 りんご
1 バナナ

と二つに別れてしまいます。

これを

ID(id) カテゴリ名(category)
1 りんご、バナナ

にしたい時があると思います(複数テーブルにまたがる場合など)。

この方法を備忘録的に残しておきます。

GROUP_CONCAT を使用する。

MySQLにはGROUP_CONCATという関数があり、これを使うと複数行になる検索結果を一つにまとめることができます。


select *, GROUP_CONCAT(category) as category_name from tablename where id = $id

という書き方です。
(category)の箇所はまとめたいカラム名、category_nameの箇所はまとめた後のカラム名になります。

ぜひお試しください。