Help us understand the problem. What is going on with this article?

【MySQL】GROUP_CONCAT × CONCATでデータ整形

usersテーブル

id name class_id
1 鈴木一郎 1
2 田中二郎 3
3 高橋三郎 2
4 佐藤四郎 3
5 木村五郎 1
6 森六郎 3

やりたいこと

クラス毎にどの学生が所属しているか確認したい。
取得してきたname_listの名前は、諸事情によりダブルクォーテーションで囲んでおきたい。

class_id name_list
1 "鈴木一郎","木村五郎"
2 "高橋三郎"
3 "田中二郎","佐藤四郎","森六郎"

試したこと

まずはGROUP_CONCATで試してみました。
GROUP_CONCATはグループ(今回だとclass_id)から連結された非 NULL 値を含む文字列の結果を返す関数です。

SQL文

SELECT
    class_id, GROUP_CONCAT(name) as name_list
FROM
    users
GROUP BY
    class_id;

取得結果

class_id name_list
1 鈴木一郎,木村五郎
2 高橋三郎
3 田中二郎,佐藤四郎,森六郎

このやり方だと、名前がカンマ (「,」)で区切られています。
SEPARATORを使って次のように書くと「鈴木一郎/木村五郎」のようになりますが、区切り文字しか指定できないため、ダブルクォーテーションで囲むことができません。

GROUP_CONCAT(name SEPARATOR '/')

最終的にやったこと

GROUP_CONCAT内でCONCATを使うことで実現しました。
CONCATを使うことで名前の前後にダブルクォーテーションを結合させて、それをGROUP_CONCATで連結しています。

SQL文

SELECT
    class_id, GROUP_CONCAT(CONCAT('"',name,'"')) as name_list
FROM
    users
GROUP BY
    class_id;

取得結果

class_id name_list
1 "鈴木一郎","木村五郎"
2 "高橋三郎"
3 "田中二郎","佐藤四郎","森六郎"
ikeo
Software Engineer / twitter @ikeo256
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした