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

MySQL-এ GROUP_CONCAT ব্যবহার করে একাধিক রোকে এক ফিল্ডে জোড়া দেওয়া

MySQL-এ GROUP_CONCAT() অগ্রগেট ফাংশন ব্যবহার করে একই গ্রুপের একাধিক রোয়ের মানগুলোকে একটি স্ট্রিংয়ে (কমা বা অন্য সিপারেটর দিয়ে) জোড়া দেওয়া যায়।

টেবিল ও ডেটা

mysql> CREATE TABLE DemoTable2024 (
    -> SubjectName VARCHAR(20),
    -> StudentName VARCHAR(20)
    -> ); 
Query OK, 0 rows affected (0.62 sec)

mysql> INSERT INTO DemoTable2024 VALUES ('MySQL', 'Chris');
mysql> INSERT INTO DemoTable2024 VALUES ('MySQL', 'David');
mysql> INSERT INTO DemoTable2024 VALUES ('MongoDB', 'Bob');
mysql> INSERT INTO DemoTable2024 VALUES ('Java', 'Sam');
mysql> INSERT INTO DemoTable2024 VALUES ('MongoDB', 'Mike');
mysql> SELECT * FROM DemoTable2024;
+-------------+-------------+
| SubjectName | StudentName |
+-------------+-------------+
| MySQL       | Chris       |
| MySQL       | David       |
| MongoDB     | Bob         |
| Java        | Sam         |
| MongoDB     | Mike        |
+-------------+-------------+

গ্রুপ কনক্যাট কোয়ারি

mysql> SELECT SubjectName, GROUP_CONCAT(StudentName)
    -> FROM DemoTable2024
    -> GROUP BY SubjectName;

আউটপুট

+-------------+---------------------------+
| SubjectName | group_concat(StudentName) |
+-------------+---------------------------+
| Java        | Sam                       |
| MongoDB     | Bob,Mike                  |
| MySQL       | Chris,David               |
+-------------+---------------------------+

অপশন: GROUP_CONCAT(StudentName SEPARATOR '; ') দিয়ে কাস্টম সিপারেটর দিতে পারেন। ডিফল্ট কমা। বড় ডেটাসেটের জন্য group_concat_max_len সিস্টেম ভেরিয়েবল বড় করতে হতে পারে।

  1. MySQL-এ IN() অপারেটর দিয়ে একক কোয়েরিতে একাধিক রেকর্ড ডিলিট করা

  2. MySQL-এ ORDER BY COUNT(*) DESC LIMIT 1 দিয়ে সর্বাধিক ফ্রিকোয়েন্সি वाला মান বের করা

  3. MySQL-এ ডিলিট হওয়া AUTO_INCREMENT আইডি পুনঃক্রমিকরণ (Re-sequence) করা

  4. MySQL-এ DISTINCT ব্যবহার করে ডুপ্লিকেট রো থেকে শুধু একটি রো দেখানো