การรวมสตริงหลายแถวเป็นสตริงเดียวด้วย GROUP_CONCAT()
ฟังก์ชัน GROUP_CONCAT() ใน MySQL ใช้รวมค่าจากหลายแถวในกลุ่มเดียวกันเป็นสตริงเดียว คั่นด้วยเครื่องหมายจุลภาค (หรือตัวคั่นที่กำหนด)
สร้างตารางและเพิ่มข้อมูล
mysql> CREATE TABLE DemoTable (
StudentId INT,
StudentFirstName VARCHAR(100),
StudentLastName VARCHAR(100)
);
Query OK, 0 rows affected (0.54 sec)
mysql> INSERT INTO DemoTable VALUES(1000,'Adam','Smith');
mysql> INSERT INTO DemoTable VALUES(1000,'John','Doe');
mysql> INSERT INTO DemoTable VALUES(1000,'David','Miller');
แสดงข้อมูลทั้งหมด
mysql> SELECT * FROM DemoTable;
ผลลัพธ์:
+-----------+------------------+-----------------+
| StudentId | StudentFirstName | StudentLastName |
+-----------+------------------+-----------------+
| 1000 | Adam | Smith |
| 1000 | John | Doe |
| 1000 | David | Miller |
+-----------+------------------+-----------------+
3 rows in set (0.00 sec)
คำสั่งรวมชื่อและนามสกุลตาม StudentId
mysql> SELECT StudentId,
GROUP_CONCAT(StudentFirstName),
GROUP_CONCAT(StudentLastName)
FROM DemoTable GROUP BY StudentId;
ผลลัพธ์:
+-----------+--------------------------------+-------------------------------+
| StudentId | group_concat(StudentFirstName) | group_concat(StudentLastName) |
+-----------+--------------------------------+-------------------------------+
| 1000 | Adam,John,David | Smith,Doe,Miller |
+-----------+--------------------------------+-------------------------------+
1 row in set (0.00 sec)
คำอธิบาย
GROUP BY StudentId: จัดกลุ่มแถวที่มี StudentId เดียวกันGROUP_CONCAT(StudentFirstName): รวมชื่อในกลุ่ม คั่นด้วย comma- สามารถกำหนดตัวคั่นเองได้ด้วย
GROUP_CONCAT(col SEPARATOR '|') - มีข้อจำกัดความยาวสูงสุด (default 1024 ตัวอักษร) ปรับได้ด้วย
group_concat_max_len