การใช้ GROUP_CONCAT()
ฟังก์ชัน GROUP_CONCAT() รวมค่าจากหลายแถวเป็นสตริงเดียว คั่นด้วยเครื่องหมาย (Default คือ คอมมา)
ตัวอย่าง
mysql> create table DemoTable813(
UserId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
UserFirstName varchar(100),
UserLastName varchar(100) );
Query OK, 0 rows affected (0.49 sec)
mysql> insert into DemoTable813(UserFirstName,UserLastName) values('Adam','Smith');
mysql> insert into DemoTable813(UserFirstName,UserLastName) values('Chris','Brown');
mysql> insert into DemoTable813(UserFirstName,UserLastName) values('David','Miller');
mysql> insert into DemoTable813(UserFirstName,UserLastName) values('Carol','Taylor');
รวม LastName เฉพาะ UserId < 4
mysql> select group_concat(UserLastName) from DemoTable813 where UserId < 4;
ผลลัพธ์:
+----------------------------+
| group_concat(UserLastName) |
+----------------------------+
| Smith,Brown,Miller |
+----------------------------+
ตัวเลือกเพิ่มเติม
-- เปลี่ยนตัวคั่น
SELECT GROUP_CONCAT(UserLastName SEPARATOR ' | ') FROM DemoTable813;
-- เรียงลำดับก่อนรวม
SELECT GROUP_CONCAT(UserLastName ORDER BY UserLastName) FROM DemoTable813;
-- จำกัดจำนวน
SELECT GROUP_CONCAT(UserLastName LIMIT 2) FROM DemoTable813;
ค่า Default และการตั้งค่า
- ค่าความยาวสูงสุด Default: 1024 ตัวอักษร (ควบคุมด้วย
group_concat_max_len) - คืนค่า NULL ถ้าไม่มีแถวตรงเงื่อนไข
- ใช้ร่วมกับ
GROUP BYเพื่อรวมตามกลุ่ม
สรุป
GROUP_CONCAT() เหมาะสำหรับสร้างรายการค่ารวม เช่น แท็ก, หมวดหมู่, อีเมลผู้รับ ใช้ SEPARATOR, ORDER BY, LIMIT ควบคุมรูปแบบผลลัพธ์