ใช้ GROUP_CONCAT() ร่วมกับ WHERE เพื่อรวมข้อมูลเฉพาะแถวที่ตรงเงื่อนไขเป็นแถวเดียว
สร้างตารางตัวอย่าง
mysql> create table DemoTable (
PlayerName varchar(40),
PlayerStatus tinyint(1) );
Query OK, 0 rows affected (0.60 sec)
เพิ่มข้อมูลตัวอย่าง
mysql> insert into DemoTable values('Chris',1); Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable values('David',0); Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable values('Sam',1); Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable values('Carol',1); Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable values('Bob',0); Query OK, 1 row affected (0.14 sec)
แสดงข้อมูลทั้งหมด
mysql> select *from DemoTable;
+------------+--------------+ | PlayerName | PlayerStatus | +------------+--------------+ | Chris | 1 | | David | 0 | | Sam | 1 | | Carol | 1 | | Bob | 0 | +------------+--------------+ 5 rows in set (0.00 sec)
คิวรี่รวมชื่อที่ PlayerStatus = 1
mysql> select group_concat(PlayerName) from DemoTable where PlayerStatus=1;
ผลลัพธ์:
+--------------------------+ | group_concat(PlayerName) | +--------------------------+ | Chris,Sam,Carol | +--------------------------+ 1 row in set (0.00 sec)
การปรับแต่ง GROUP_CONCAT
- เปลี่ยนตัวคั่น:
GROUP_CONCAT(PlayerName SEPARATOR ' | ') - เรียงลำดับ:
GROUP_CONCAT(PlayerName ORDER BY PlayerName) - จำกัดจำนวน:
GROUP_CONCAT(PlayerName LIMIT 5)(MySQL 8.0+) - เพิ่ม DISTINCT:
GROUP_CONCAT(DISTINCT PlayerName)
การใช้งานร่วมกับ GROUP BY
SELECT status, GROUP_CONCAT(name) FROM DemoTable GROUP BY status;
ข้อจำกัด
ค่าเริ่มต้นความยาวสูงสุด 1024 ตัวอักษร เปลี่ยนได้ด้วย:
SET SESSION group_concat_max_len = 10000;