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

MySQL-এ GROUP_CONCAT() ব্যবহার করে ফিল্ড কনক্যাটেনেট করা

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

টেবিল ও ডেটা

mysql> CREATE TABLE DemoTable (
    StudentId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    StudentName VARCHAR(30),
    StudentScore INT
);
mysql> INSERT INTO DemoTable(StudentName, StudentScore) VALUES 
('Bob',80), ('Bob',80), ('Chris',90), ('Chris',70), ('Bob',50), ('David',60), ('Chris',99), ('David',88);

সকল ডেটা

+-----------+-------------+--------------+
| StudentId | StudentName | StudentScore |
+-----------+-------------+--------------+
| 1         | Bob         | 80           |
| 2         | Bob         | 80           |
| 3         | Chris       | 90           |
| 4         | Chris       | 70           |
| 5         | Bob         | 50           |
| 6         | David       | 60           |
| 7         | Chris       | 99           |
| 8         | David       | 88           |
+-----------+--------------+

গ্রুপ বাই করে কনক্যাটেনেট

mysql> SELECT StudentName, 
       GROUP_CONCAT(StudentScore SEPARATOR ',') AS Score 
       FROM DemoTable 
       GROUP BY StudentName;

ফলাফল

+-------------+----------+
| StudentName | Score    |
+-------------+----------+
| Bob         | 80,80,50 |
| Chris       | 90,70,99 |
| David       | 60,88    |
+-------------+----------+

দ্রষ্টব্য: ডিফল্ট সেপারেটর কমা (,)। SEPARATOR ক্লজ দিয়ে অন্য সেপারেটর ব্যবহার করা যায়। বড় ডেটাসেটের জন্য GROUP_CONCAT_MAX_LEN সিস্টেম ভ্যারিয়েবল বাড়াতে হতে পারে।

  1. MySQL-এ ব্যাকস্ল্যাশ (\\) এন্ট্রি ডিলিট করা

  2. MySQL-এ GROUP_CONCAT ব্যবহার করে ডISTINCT ফলাফলগুলোকে স্ট্রিং-এ রূপান্তর

  3. MySQL-এ গ্রুপ করা ফিল্ডের মাধ্যমে ORDER BY করার পদ্ধতি

  4. MySQL-এ CONCAT() এবং REPEAT() দিয়ে ডেটা ফিল্ড মাস্ক করা (পাসওয়ার্ড হাইড করা)