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

MySQL-এ GROUP_CONCAT() ব্যবহার করে কলাম মানগুলো CSV ফরম্যাটে দেখানো

একটি কলামের সব মান কমা-বিন্যস্ত একটি স্ট্রিংয়ে যোড় করার জন্য GROUP_CONCAT() ফাংশন ব্যবহার করা হয়। এটি CSV এক্সপোর্ট বা রিপোর্টিং-এ খুব কাজে লাগে।

টেবিল তৈরি (AUTO_INCREMENT 101 থেকে)

mysql> CREATE TABLE DemoTable786 (
    StudentId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    StudentName VARCHAR(100)
) AUTO_INCREMENT = 101;
Query OK, 0 rows affected (0.70 sec)

ডেটা ইনসার্ট

mysql> INSERT INTO DemoTable786(StudentName) VALUES ('Chris');
Query OK, 1 row affected (0.13 sec)
mysql> INSERT INTO DemoTable786(StudentName) VALUES ('Robert');
Query OK, 1 row affected (0.24 sec)
mysql> INSERT INTO DemoTable786(StudentName) VALUES ('Mike');
Query OK, 1 row affected (0.15 sec)
mysql> INSERT INTO DemoTable786(StudentName) VALUES ('Sam');
Query OK, 1 row affected (0.12 sec)

রেকর্ড দেখানো

mysql> SELECT * FROM DemoTable786;

আউটপুট:

+-----------+-------------+
| StudentId | StudentName |
+-----------+-------------+
| 101       | Chris       |
| 102       | Robert      |
| 103       | Mike        |
| 104       | Sam         |
+-----------+-------------+
4 rows in set (0.00 sec)

দুই কলাম CSV আকারে পাওয়া

mysql> SELECT GROUP_CONCAT(StudentId), GROUP_CONCAT(StudentName) 
FROM DemoTable786;

ফলাফল:

+-------------------------+---------------------------+
| GROUP_CONCAT(StudentId) | GROUP_CONCAT(StudentName) |
+-------------------------+---------------------------+
| 101,102,103,104         | Chris,Robert,Mike,Sam     |
+-------------------------+---------------------------+
1 row in set (0.00 sec)

GROUP_CONCAT অপশনস

-- কাস্টম সেপারেটর
GROUP_CONCAT(StudentName SEPARATOR '; ')

-- সর্ট করে যোড়া
GROUP_CONCAT(StudentName ORDER BY StudentName)

-- ডISTINCT মান
GROUP_CONCAT(DISTINCT StudentName)

-- লিমিট (MySQL 8.0+)
GROUP_CONCAT(StudentName LIMIT 5)

সীমাবদ্ধতা

ডিফল্ট ম্যাক্স দৈর্ঘ্য ১০২৪ বাইট (group_concat_max_len সিস্টেম ভেরিয়েবল দিয়ে বাড়ানো যায়)।

  1. MySQL-এ সিঙ্গেল কোটসহ টেক্সট ইনসার্ট ও প্রদর্শন (ডাবল কোট ব্যবহার)

  2. MySQL-এ ফ্লোট ভ্যালু রাউন্ড করে নতুন কলামে ফলাফল প্রদর্শন করা

  3. MySQL-এ CASE WHEN দিয়ে দুটি কলাম মান সওয়াপ (স್ವাপ) করা

  4. MySQL-এ SUBSTRING_INDEX() ব্যবহার করে কলাম বিভক্ত করা (স্প্লিট)