Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

การใช้ GROUP_CONCAT รวมข้อมูลเฉพาะเงื่อนไขใน MySQL

ใช้ 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;