Giới thiệu
Hàm GROUP_CONCAT() nối các giá trị không NULL của một cột trong nhóm thành một chuỗi, cách nhau bởi dấu phẩy (hoặc ký tự tùy chỉnh). Bài viết demo gom họ (LastName) của người dùng có UserId < 4.
Ví dụ thực hành
1. Tạo bảng DemoTable813
mysql> CREATE TABLE DemoTable813 (
UserId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
UserFirstName VARCHAR(100),
UserLastName VARCHAR(100)
);
2. Chèn dữ liệu
mysql> INSERT INTO DemoTable813(UserFirstName,UserLastName) VALUES
('Adam','Smith'),('Chris','Brown'),('David','Miller'),('Carol','Taylor');
3. GROUP_CONCAT với điều kiện
mysql> SELECT GROUP_CONCAT(UserLastName) FROM DemoTable813 WHERE UserId < 4;
4. Kết quả
+----------------------------+
| GROUP_CONCAT(UserLastName) |
+----------------------------+
| Smith,Brown,Miller |
+----------------------------+
Tùy chỉnh GROUP_CONCAT
-- Thay đổi dấu phân cách
SELECT GROUP_CONCAT(UserLastName SEPARATOR '; ') FROM DemoTable813 WHERE UserId < 4;
-- Kết quả: Smith; Brown; Miller
-- Sắp xếp trước khi nối
SELECT GROUP_CONCAT(UserLastName ORDER BY UserLastName) FROM DemoTable813 WHERE UserId < 4;
-- Loại bỏ trùng lặp
SELECT GROUP_CONCAT(DISTINCT UserLastName) FROM DemoTable813 WHERE UserId < 4;
-- Giới hạn độ dài kết quả (mặc định 1024 bytes, set group_concat_max_len)
SET SESSION group_concat_max_len = 10000;
Lưu ý
- Giá trị
NULLbị bỏ qua tự động. - Kết quả bị cắt nếu vượt quá
group_concat_max_len(mặc định 1024). - Thường dùng kết hợp
GROUP BYđể gom theo nhóm (ví dụ: gom họ theo quốc gia).