Để gộp toàn bộ giá trị của một cột thành một chuỗi duy nhất, phân tách bằng dấu phẩy (hoặc ký tự tùy chọn), MySQL cung cấp hàm GROUP_CONCAT(). Kết hợp với CONCAT() có thể thêm dấu ngoặc, ký tự đặc biệt cho mỗi giá trị.
Tạo bảng và chèn dữ liệu
mysql> CREATE TABLE DemoTable (
Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
FirstName VARCHAR(20)
);
mysql> INSERT INTO DemoTable (FirstName) VALUES
('John'), ('Larry'), ('Chris'), ('Robert'), ('David');
Xem dữ liệu
mysql> SELECT * FROM DemoTable;
+----+-----------+
| Id | FirstName |
+----+-----------+
| 1 | John |
| 2 | Larry |
| 3 | Chris |
| 4 | Robert |
| 5 | David |
+----+-----------+
Nối chuỗi với định dạng tùy chỉnh
Ví dụ: đưa mỗi tên vào trong dấu ngoặc kép " " và phân tách bằng dấu phẩy:
mysql> SELECT GROUP_CONCAT(CONCAT('"', FirstName, '"')) AS FirstName
FROM DemoTable;
Kết quả
+-----------------------------------------+
| FirstName |
+-----------------------------------------+
| "John","Larry","Chris","Robert","David" |
+-----------------------------------------+
Tùy chọn phân tách (SEPARATOR)
Mặc định GROUP_CONCAT dùng dấu phẩy. Bạn có thể đổi bằng mệnh đề SEPARATOR:
SELECT GROUP_CONCAT(FirstName SEPARATOR '; ') AS Names FROM DemoTable;
Kết quả: John; Larry; Chris; Robert; David
Lưu ý: Độ dài mặc định của kết quả GROUP_CONCAT là 1024 ký tự. Nếu dữ liệu lớn, hãy tăng group_concat_max_len trước khi truy vấn: SET SESSION group_concat_max_len = 1000000;.