MySQL-এ GROUP_CONCAT() এগরিগেট ফাংশনের ভিতরেই ORDER BY ক্লজ ব্যবহার করে কনক্যাটেনেশনের ক্রম নিয়ন্ত্রণ করা যায়।
উদাহরণ
১. টেবিল তৈরি করুন
mysql> CREATE TABLE DemoTable1588 (
-> StudentId INT,
-> StudentFirstName VARCHAR(20),
-> StudentMarks INT
-> );
২. ডেটা ইনসার্ট করুন (একই মার্কস ৭৯)
mysql> INSERT INTO DemoTable1588 VALUES(110, 'Bob', 78);
mysql> INSERT INTO DemoTable1588 VALUES(101, 'Sam', 78);
mysql> INSERT INTO DemoTable1588 VALUES(105, 'Mike', 78);
৩. সব রেকর্ড দেখুন
mysql> SELECT * FROM DemoTable1588;
আউটপুট:
+-----------+------------------+--------------+
| StudentId | StudentFirstName | StudentMarks |
+-----------+------------------+--------------+
| 110 | Bob | 78 |
| 101 | Sam | 78 |
| 105 | Mike | 78 |
+-----------+------------------+--------------+
৪. GROUP_CONCAT এ ORDER BY StudentId ব্যবহার করুন
mysql> SELECT GROUP_CONCAT(StudentFirstName ORDER BY StudentId SEPARATOR '--')
-> FROM DemoTable1588 GROUP BY StudentMarks;
৫. ফলাফল
+------------------------------------------------------------------+
| group_concat(StudentFirstName order by StudentId separator '--') |
+------------------------------------------------------------------+
| Sam--Mike--Bob |
+------------------------------------------------------------------+
ব্যাখ্যা: ইনসার্ট অর্ডার ছিল Bob (110), Sam (101), Mike (105)। কিন্তু ORDER BY StudentId দিয়ে সর্ট করে Sam (101), Mike (105), Bob (110) ক্রমে কনক্যাট করা হয়েছে। সেপারেটর '--' ব্যবহার করা হয়েছে।
সিনট্যাক্স: GROUP_CONCAT(expr ORDER BY col1, col2 ... SEPARATOR 'sep')
লিমিটেশন: ডিফল্ট group_concat_max_len (১০২৪ বাইট) 넘는লে কাটা যায়। বড় ডেটার জন্য সেটিং বাড়ান: SET SESSION group_concat_max_len = 1000000;