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

การรวมค่าจากหลายแถวเป็นฟิลด์เดียวด้วย GROUP_CONCAT ใน MySQL

String Aggregation ด้วย GROUP_CONCAT()

GROUP_CONCAT() รวมค่าจากหลายแถวในกลุ่มเดียวกันเป็นสตริงเดียว คั่นด้วยคอมมา (หรือตัวแบ่งที่กำหนด)

ตัวอย่าง: รวมนักศึกษาตามวิชา

CREATE TABLE DemoTable2024 (
    SubjectName VARCHAR(20),
    StudentName VARCHAR(20)
);

INSERT INTO DemoTable2024 VALUES
('MySQL', 'Chris'), ('MySQL', 'David'),
('MongoDB', 'Bob'), ('Java', 'Sam'),
('MongoDB', 'Mike');

SELECT SubjectName, GROUP_CONCAT(StudentName)
FROM DemoTable2024
GROUP BY SubjectName;

ผลลัพธ์

SubjectNameStudents
JavaSam
MongoDBBob,Mike
MySQLChris,David

ตัวเลือกเพิ่มเติม:

  • GROUP_CONCAT(DISTINCT StudentName) - ไม่ซ้ำ
  • GROUP_CONCAT(StudentName ORDER BY StudentName SEPARATOR '; ') - เรียงลำดับและเปลี่ยนตัวแบ่ง
  • SET SESSION group_concat_max_len = 10000; - เพิ่มความยาวสูงสุด (default 1024)