Sử dụng CASE WHEN trong hàm tổng hợp MAX() để "pivot" hàng thành cột, sau đó CONCAT nối chuỗi.
Ví dụ minh họa
Tạo bảng Subject-Name theo Id:
mysql> CREATE TABLE DemoTable1869 (Id INT, Subject VARCHAR(20), Name VARCHAR(20)); mysql> INSERT INTO DemoTable1869 VALUES(100,'MySQL','John'),(100,'MongoDB','Smith'),(101,'MySQL','Chris'),(101,'MongoDB','Brown');
Nối tên MySQL + MongoDB theo Id:
mysql> SELECT Id, CONCAT(StudentFirstName, '', StudentLastName) FROM (
SELECT Id,
MAX(CASE WHEN Subject='MySQL' THEN Name END) AS StudentFirstName,
MAX(CASE WHEN Subject='MongoDB' THEN Name END) AS StudentLastName
FROM DemoTable1869 GROUP BY Id
) tbl;
Kết quả:
+------+---------------------------------------------+ | Id | CONCAT(StudentFirstName, '', StudentLastName) | +------+---------------------------------------------+ | 100 | JohnSmith | | 101 | ChrisBrown | +------+---------------------------------------------+
MySQL 8+: Dùng GROUP_CONCAT(Name ORDER BY Subject SEPARATOR '') đơn giản hơn nếu thứ tự cố định.