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

Chuyển đổi dữ liệu cột thành danh sách phân cách bằng dấu phẩy trong MySQL

Hàm GROUP_CONCAT() trong MySQL cho phép gộp nhiều giá trị của một cột thành một chuỗi duy nhất, phân cách bởi ký tự tuỳ chọn (mặc định là dấu phẩy). Đây là công cụ hữu ích khi cần hiển thị dữ liệu dạng danh sách hoặc xuất báo cáo.

Cú pháp

SELECT cot_nhom, GROUP_CONCAT(cot_ghep [SEPARATOR 'ky_tu_phan_cach']) 
FROM ten_bang 
GROUP BY cot_nhom;

Ví dụ minh họa

Tạo bảng lưu tên khách hàng theo ClientId:

CREATE TABLE DemoTable (
    ClientId INT,
    ClientName VARCHAR(20)
);

Chèn dữ liệu (cùng ClientId = 100):

INSERT INTO DemoTable VALUES (100, 'Chris');
INSERT INTO DemoTable VALUES (100, 'Robert');
INSERT INTO DemoTable VALUES (100, 'Adam');
INSERT INTO DemoTable VALUES (100, 'David');

Sử dụng GROUP_CONCAT để gộp tên:

SELECT ClientId, GROUP_CONCAT(ClientName SEPARATOR ',') AS DanhSachTen
FROM DemoTable 
GROUP BY ClientId;

Kết quả

ClientIdDanhSachTen
100Chris,Robert,Adam,David

Các tùy chọn hữu ích

  • DISTINCT: Loại bỏ giá trị trùng lặp trước khi gộp: GROUP_CONCAT(DISTINCT ClientName)
  • ORDER BY: Sắp xếp trước khi gộp: GROUP_CONCAT(ClientName ORDER BY ClientName)
  • SEPARATOR: Thay đổi ký tự phân cách (mặc định là ','): SEPARATOR '; '

Lưu ý: Độ dài kết quả mặc định bị giới hạn bởi biến hệ thống group_concat_max_len (thường là 1024 byte). Có thể tăng giá trị này bằng SET SESSION group_concat_max_len = 1000000; nếu cần gộp nhiều dữ liệu.