Computer >> Máy Tính >  >> Lập trình >> MySQL

Làm cách nào để kết hợp các giá trị trùng lặp thành một với giá trị tương ứng được phân tách bằng dấu gạch ngang trong MySQL?

Để kết hợp, hãy sử dụng hàm GROUP_CONCAT () để kết hợp một số thuộc tính trong hai hàng thành một. Làm dấu phân cách, hãy sử dụng dấu gạch nối.

Đầu tiên chúng ta hãy tạo một bảng -

mysql> create table DemoTable1386
   -> (
   -> Title varchar(255),
   -> Name varchar(60)
   -> );
Query OK, 0 rows affected (0.67 sec)

Chèn một số bản ghi vào bảng bằng lệnh chèn -

mysql> insert into DemoTable1386 values('Introduction to MySQL','Paul DuBois');
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable1386 values('Java in Depth','Khalid Mughal');
Query OK, 1 row affected (0.48 sec)
mysql> insert into DemoTable1386 values('Introduction to MySQL','Russell Dyer');
Query OK, 1 row affected (0.20 sec)
mysql> insert into DemoTable1386 values('Java in Depth','Joshua Bloch');
Query OK, 1 row affected (0.17 sec)

Hiển thị tất cả các bản ghi từ bảng bằng câu lệnh select -

mysql> select * from DemoTable1386;

Điều này sẽ tạo ra kết quả sau -

+-----------------------+---------------+
| Title                 | Name          |
+-----------------------+---------------+
| Introduction to MySQL | Paul DuBois   |
| Java in Depth         | Khalid Mughal |
| Introduction to MySQL | Russell Dyer  |
| Java in Depth         | Joshua Bloch  |
+-----------------------+---------------+
4 rows in set (0.00 sec)

Sau đây là truy vấn để kết hợp các giá trị trùng lặp -

mysql> select Title,group_concat(Name separator '----') from DemoTable1386
-> group by Title;

Điều này sẽ tạo ra kết quả sau -

+-----------------------+-------------------------------------+
| Title                 | group_concat(Name separator '----') |
+-----------------------+-------------------------------------+
| Introduction to MySQL | Paul DuBois----Russell Dyer         |
| Java in Depth         | Khalid Mughal----Joshua Bloch       |
+-----------------------+-------------------------------------+
2 rows in set (0.00 sec)