GROUP_CONCAT(): รวมหลายแถวเป็นสตริงเดียว
ฟังก์ชัน GROUP_CONCAT() รวมค่าจากหลายแถวเป็นสตริงเดียว คั่นด้วย Separator ที่กำหนด ใช้ได้กับ GROUP BY หรือไม่ก็ได้ (จะรวมทั้ง Result Set)
สร้างตารางและข้อมูล
mysql> CREATE TABLE DemoTable1507 (
-> Name VARCHAR(20),
-> PaperSet INT
-> );
Query OK, 0 rows affected (0.68 sec)
mysql> INSERT INTO DemoTable1507 VALUES
-> ('Chris', 111), ('David', 112), ('Mike', 111), ('Bob', 113);
Query OK, 4 rows affected
ข้อมูลทั้งหมด
+-------+----------+ | Name | PaperSet | +-------+----------+ | Chris | 111 | | David | 112 | | Mike | 111 | | Bob | 113 | +-------+----------+
คำสั่ง: รวม Name ที่ PaperSet=111 เรียงจาก Z-A คั่นด้วย :
mysql> SELECT GROUP_CONCAT(Name ORDER BY Name DESC SEPARATOR ':')
-> FROM DemoTable1507
-> WHERE PaperSet = 111;
ผลลัพธ์
+-----------------------------------------------------+ | group_concat(Name order by Name desc separator ':') | +-----------------------------------------------------+ | Mike:Chris | +-----------------------------------------------------+
ไวยากรณ์เต็ม
GROUP_CONCAT([DISTINCT] expr [ORDER BY ...] [SEPARATOR str])
ตัวเลือกที่ใช้บ่อย
| ตัวเลือก | คำอธิบาย | ตัวอย่าง |
|---|---|---|
DISTINCT | ลบค่าซ้ำ | GROUP_CONCAT(DISTINCT Name) |
ORDER BY | เรียงลำดับก่อนรวม | GROUP_CONCAT(Name ORDER BY Name) |
SEPARATOR | ตัวคั่น (Default = ',') | GROUP_CONCAT(Name SEPARATOR ';') |