MySQL-এ কোনো কলাম অনুযায়ী রোগুলো গ্রুপ করে সেসব রোর অন্য কলামের ভ্যালুগুলো কমা-সেপারেটেড স্ট্রিং (অ্যারে-লাইক) আকারে পেতে GROUP_CONCAT() সাথে GROUP BY এবং ORDER BY ব্যবহার করা হয়।
টেবিল ও ডেটা
mysql> create table DemoTable ( Id int, FirstName varchar(20) ); mysql> insert into DemoTable values(101,'John'),(102,'Bob'),(101,'David'),(101,'Adam'),(102,'Chris');
সব রেকর্ড
mysql> select * from DemoTable; +------+-----------+ | Id | FirstName | +------+-----------+ | 101 | John | | 102 | Bob | | 101 | David | | 101 | Adam | | 102 | Chris | +------+-----------+
Id অনুযায়ী গ্রুপ করে FirstName কমা-সেপারেটেড করা (গруп সাইজ অনুযায়ী অর্ডার)
mysql> select Id, group_concat(FirstName separator ',') from DemoTable group by Id order by count(Id); +------+---------------------------------------+ | Id | group_concat(FirstName separator ',') | +------+---------------------------------------+ | 102 | Bob,Chris | | 101 | John,David,Adam | +------+---------------------------------------+
ব্যাখ্যা:
GROUP BY Id— একই Id-वाले রোগুলো গ্রুপ করা।GROUP_CONCAT(FirstName separator ',')— গ্রুপের FirstNameগুলো কমা দিয়ে জড়ানো।ORDER BY count(Id)— গ্রুপ সাইজ (রো কাউন্ট) অনুযায়ী অর্ডার (ছোট গ্রুপ আগে)।
GROUP_CONCAT-এ ORDER BY দিয়ে গ্রুপের ভিতরেও সর্ট করা যায়: GROUP_CONCAT(FirstName ORDER BY FirstName SEPARATOR ',')।