Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Ghép nối chuỗi (GROUP_CONCAT) họ tên trong MySQL với điều kiện giới hạn

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ị NULL bị 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).