สามารถใช้ฟังก์ชัน GROUP_CONCAT() ร่วมกับ ORDER BY เพื่อจัดเรียงข้อมูลก่อนรวมเป็นสตริงเดียว
ตัวอย่างการใช้งาน
สร้างตารางนักเรียน:
mysql> create table DemoTable1588 (
-> StudentId int,
-> StudentFirstName varchar(20),
-> StudentMarks int
-> );
Query OK, 0 rows affected (0.49 sec)
เพิ่มข้อมูลทดสอบ:
mysql> insert into DemoTable1588 values(110,'Bob',78); Query OK, 1 row affected (0.13 sec) mysql> insert into DemoTable1588 values(101,'Sam',78); Query OK, 1 row affected (0.10 sec) mysql> insert into DemoTable1588 values(105,'Mike',78); Query OK, 1 row affected (0.26 sec)
ดูข้อมูลทั้งหมด:
mysql> select * from DemoTable1588;
+-----------+------------------+--------------+ | StudentId | StudentFirstName | StudentMarks | +-----------+------------------+--------------+ | 110 | Bob | 78 | | 101 | Sam | 78 | | 105 | Mike | 78 | +-----------+------------------+--------------+ 3 rows in set (0.00 sec)
คิวรีใช้ GROUP_CONCAT กับ ORDER BY
mysql> select group_concat(StudentFirstName order by StudentId separator '--')
-> from DemoTable1588
-> group by StudentMarks;
ผลลัพธ์: ชื่อจะถูกรวมตามลำดับ StudentId แยกด้วย '--'
+------------------------------------------------------------------+ | group_concat(StudentFirstName order by StudentId separator '--') | +------------------------------------------------------------------+ | Sam--Mike--Bob | +------------------------------------------------------------------+ 1 row in set (0.04 sec)
คำอธิบาย
ORDER BY ภายใน GROUP_CONCAT() จะจัดลำดับค่าก่อนทำการรวม ส่วน separator กำหนดตัวคั่นระหว่างค่า