group_concat関数

広告

group_concat関数はグループ内のカラムの値を連結して表示するために使用します。書式は次の通りです。

group_concat(カラム名)

GROUP BY句を使ってグループ化した時に、同じグループ内のカラムの値を連結して表示するために使用します。同じグループ内の数値が格納されたカラムに対しては合計したり平均を取ったりしますが、group_concat関数は同じグループ内の文字列などが格納されたカラムに対してgroup_concat関数を使ってカラムの値を一つの文字列に連結して表示したい場合などに使われます。

区切り文字を指定しなかった場合はカンマ(,)を区切り文字として値を連結します。カンマ(,)以外の区切り文字を指定する場合は次の書式を使用します。

group_concat(カラム名, 区切り文字)

例として区切り文字に「/」を使用する場合は、2番目の引数に"/"を指定します。

具体的には次のように使用します。

create table goods(name text, category text);

select group_concat(name) from pointtable group by category;
select group_concat(name, '/') from pointtable group by category;

このSELECT文では「category」カラム毎にグループ化を行い、同じグループに含まれる「name」カラムの値を連結して表示します。

サンプル

では実際に試してみます。

次のようなデータが格納されたテーブルを対象にします。

p5-1

次に「classname」カラム毎にグループ化し、同じグループ内の「name」カラムの値を連結して取得してみます。

select classname, group_concat(name) from pointtable group by classname;

p5-2

区切り文字として" / "を指定して同じ値を取得してみます。

select
classname, group_concat(name, ' / ')
from pointtable
group by classname;

p5-3

( Written by Tatsuo Ikura )