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

Gộp hàng trùng lặp và nối giá trị tương ứng bằng dấu gạch ngang trong MySQL

Tạo bảng sách - tác giả

mysql> CREATE TABLE DemoTable1386 (
    -> Title VARCHAR(255),
    -> Name VARCHAR(60)
    -> );
Query OK, 0 rows affected (0.67 sec)
mysql> INSERT INTO DemoTable1386 VALUES
    -> ('Introduction to MySQL', 'Paul DuBois'),
    -> ('Java in Depth', 'Khalid Mughal'),
    -> ('Introduction to MySQL', 'Russell Dyer'),
    -> ('Java in Depth', 'Joshua Bloch');

Dữ liệu gốc (có trùng Title)

mysql> SELECT * FROM DemoTable1386;
+-----------------------+---------------+
| Title                 | Name          |
+-----------------------+---------------+
| Introduction to MySQL | Paul DuBois   |
| Java in Depth         | Khalid Mughal |
| Introduction to MySQL | Russell Dyer  |
| Java in Depth         | Joshua Bloch  |
+-----------------------+---------------+

Truy vấn: GROUP BY Title, GROUP_CONCAT Name với separator '----'

mysql> SELECT Title, GROUP_CONCAT(Name SEPARATOR '----')
    -> FROM DemoTable1386
    -> GROUP BY Title;

Kết quả

+-----------------------+-------------------------------------+
| Title                 | GROUP_CONCAT(Name SEPARATOR '----') |
+-----------------------+-------------------------------------+
| Introduction to MySQL | Paul DuBois----Russell Dyer         |
| Java in Depth         | Khalid Mughal----Joshua Bloch       |
+-----------------------+-------------------------------------+

Ứng dụng: Gom nhóm danh sách tag, category, tác giả... thành một chuỗi. Lưu ý giới hạn group_concat_max_len.