[MySQL]SELECTで取得したデータをカンマ区切りで横に並べる

MySQLで、SELECTするときに、取得したデータをカンマ区切りで横に並べて取得したいとき、GROUP_CONCATを使います。

まずはサンプルデータを作成。

CREATE TABLE member (group_id int , name varchar(20) , age int(3)); 
INSERT INTO member VALUES 
(1 , 'TANAKA' , 22 ) , (1 , 'HONDA' , 21 ), (1 , 'YOSHIDA' , 25 ), 
(2 , 'HIROSE' , 26 ), (2 , 'YAMADA' , 25 ), (2 , 'IKEDA' , 29 ), 
(3 , 'HARADA' , 28 ), (3 , 'OKUDA' , 22 ), (3 , 'OOTA' , 24 );

で、SELECTでデータを取得。 

SELECT group_id , GROUP_CONCAT(DISTINCT age SEPARATOR ',') FROM member GROUP BY group_id;

すると、こんな感じで取得できます。

1 22,21,25
2 26,25,29
3 28,22,24

DISTINCT  age で、ageをまとめます。

SEPARATOR ',' で、カンマ区切りとしています。

GROUP BY group_id で、group_id別でまとめるようにしています。

 

WHEREをつかえば、特定のgroup_idだけを取得できますね。

SELECT group_id , GROUP_CONCAT(DISTINCT age SEPARATOR ',') FROM member WHERE group_id=1
0
  • このエントリーをはてなブックマークに追加