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

รวมค่าในแต่ละแถวตาม ID เดียวกันด้วย GROUP_CONCAT ใน MySQL

การรวมสตริงหลายแถวเป็นสตริงเดียวด้วย 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