Kỹ thuật
Sử dụng GROUP_CONCAT() kết hợp GROUP BY trên cột khóa để gom các giá trị cột khác thành chuỗi phân cách bằng dấu phẩy (mặc định).
1. Tạo bảng
mysql> create table DemoTable (
Id int,
Name varchar(40)
);
Query OK, 0 rows affected (0.52 sec)
2. Chèn dữ liệu
mysql> insert into DemoTable values(100,'Chris Brown'); mysql> insert into DemoTable values(101,'Adam Smith'); mysql> insert into DemoTable values(101,'John Doe'); mysql> insert into DemoTable values(100,'David Miller'); mysql> insert into DemoTable values(101,'Carol Taylor'); mysql> insert into DemoTable values(103,'Bob Taylor');
3. Xem dữ liệu
mysql> select * from DemoTable;
+------+--------------+ | Id | Name | +------+--------------+ | 100 | Chris Brown | | 101 | Adam Smith | | 101 | John Doe | | 100 | David Miller | | 101 | Carol Taylor | | 103 | Bob Taylor | +------+--------------+ 6 rows in set (0.00 sec)
4. Truy vấn GROUP_CONCAT
mysql> select Id, group_concat(Name) from DemoTable group by Id;
Kết quả:
+------+----------------------------------+ | Id | group_concat(Name) | +------+----------------------------------+ | 100 | Chris Brown,David Miller | | 101 | Adam Smith,John Doe,Carol Taylor | | 103 | Bob Taylor | +------+----------------------------------+ 3 rows in set (0.00 sec)
Tùy chỉnh: Dùng GROUP_CONCAT(Name SEPARATOR '; ') để đổi dấu phân cách.