কম্পিউটার টিউটোরিয়াল

MySQL-এ GROUP_CONCAT() দিয়ে রো মার্জ করা (গ্রুপিং)

MySQL-এ একই গ্রুপের একাধিক রোকে এক রোতে ضم করে কলাম মানগুলো কমা-সেপারেটেড স্ট্রিং আকারে দেখাতে GROUP_CONCAT() ব্যবহার করুন।

উদাহরণ

mysql> CREATE TABLE DemoTable734 (Id INT, Name VARCHAR(100));
Query OK, 0 rows affected (0.73 sec)

mysql> INSERT INTO DemoTable734 VALUES
(101, 'John'), (102, 'John'), (103, 'Chris'), (104, 'Chris'), (104, 'Chris');
Query OK, 5 rows affected

সব রেকর্ড

mysql> SELECT * FROM DemoTable734;
+------+-------+
| Id   | Name  |
+------+-------+
| 101  | John  |
| 102  | John  |
| 103  | Chris |
| 104  | Chris |
| 104  | Chris |
+------+-------+

নেম অনুযায়ী গ্রুপ করে আইডি কমা-সেপারেটেড

mysql> SELECT Name, GROUP_CONCAT(DISTINCT Id SEPARATOR ',') FROM DemoTable734 GROUP BY Name;
+-------+-----------------------------------------+
| Name  | group_concat(DISTINCT Id SEPARATOR ',') |
+-------+-----------------------------------------+
| Chris | 103,104                                 |
| John  | 101,102                                 |
+-------+-----------------------------------------+

GROUP_CONCAT অপশনস

  • DISTINCT → ডুপ্লিকেট আইডি সরিয়ে দেয়
  • SEPARATOR ',' → ডিফল্ট কমা, পরিবর্তন করা যায়
  • ORDER BY Id → গ্রুপের ভেতরে সর্ট: GROUP_CONCAT(DISTINCT Id ORDER BY Id SEPARATOR ',')
  • group_concat_max_len সিস্টেম ভেরিয়েবল (ডিফল্ট 1024) — বড় স্ট্রিং কাটা যেতে পারে

ব্যবহার

  • রিপোর্টিং, CSV এক্সপোর্ট, ট্যাগ লিস্ট, ক্যাটাগরি এগ리게শন
  • পিভট টেবিল সিমুলেশন
  1. MySQL টেবিল থেকে একাধিক সারি ডিলিট করতে কীভাবে পারি?

  2. MySQL-এ ব্যাচ ইনসার্ট (Batch Insert) করার উপায়

  3. MySQL-এ অ্যাপস্ট্রফি (') এস্কেপ করার উপায়

  4. MySQL-এ শেষ ১০টি সারি কীভাবে বের করবেন?