kikukawa's diary

都内で活動するシステムエンジニアが書いてます。 興味を持った技術やハマったポイント、自分用メモをつけてます。 最近はweb中心

group_concatで複数行を1行にまとめる。

そのままなだけど、知らなかったのでメモ。
mysql独自の関数なので、他への移行など考えると
使いドコロが難しいけど、ちょっとした調査には
便利そうな感じ。

準備

受注テーブルなイメージで。

テーブル作成
CREATE TABLE order_detail (
 id int(11) NOT NULL,
 member_id int(11) NOT NULL,
 product varchar(60) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8
テストデータ
insert into order_detail values 
(1,1,'cake'),
(2,1,'cookie'),
(3,1,'chocolate'),
(4,2,'jelly'),
(5,2,'tea'),
(6,2,'orange'),
(7,3,'apple'),
(8,3,'daifuku'),
(9,3,'yokan')

SQL

SELECT member_id, group_concat( o.product
ORDER BY id DESC
SEPARATOR '/' )
FROM order_detail o
GROUP BY member_id

実行結果

member_id group_concat( o.product order by member_id desc separator '/' )
1 chocolate/cookie/cake
2 orange/tea/jelly
3 yokan/daifuku/apple