MySQLで、SELECTするときに、取得したデータをカンマ区切りで横に並べて取得したいとき、GROUP_CONCATを使います。
まずはサンプルデータを作成。
1 2 3 4 5 |
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でデータを取得。
1 |
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だけを取得できますね。
1 |
SELECT group_id , GROUP_CONCAT(DISTINCT age SEPARATOR ',') FROM member WHERE group_id=1 |