Kết hợp GROUP_CONCAT và CONCAT để xây dựng chuỗi JSON thủ công (trước MySQL 5.7 không có hàm JSON nguyên sinh).
Cú pháp:
SELECT cot_nhom,
GROUP_CONCAT(CONCAT('{Ten:"', ten_cot, '", Email:"', email_cot, '"}')) AS JsonFormat
FROM ten_bang
GROUP BY cot_nhom;
Ví dụ:
CREATE TABLE JsonFormatDemo (UserId INT, UserName VARCHAR(100), UserEmail VARCHAR(100)); INSERT INTO JsonFormatDemo VALUES (101,'John','John@gmail.com'), (101,'Bob','John@gmail.com'), (102,'Carol','Carol@gmail.com'), (103,'Sam','Sam@gmail.com');
Truy vấn:
SELECT UserId,
GROUP_CONCAT(CONCAT('{Name:"', UserName, '", Email:"', UserEmail, '"}')) AS JsonFormat
FROM JsonFormatDemo
GROUP BY UserId;
Kết quả
+--------+----------------------------------------------------------------------------+
| UserId | JsonFormat |
+--------+----------------------------------------------------------------------------+
| 101 | {Name:"John", Email:"John@gmail.com"},{Name:"Bob", Email:"John@gmail.com"} |
| 102 | {Name:"Carol", Email:"Carol@gmail.com"} |
| 103 | {Name:"Sam", Email:"Sam@gmail.com"} |
+--------+----------------------------------------------------------------------------+
Lưu ý: MySQL 5.7+ nên dùng JSON_ARRAYAGG(JSON_OBJECT(...)) chuẩn hơn, an toàn escaping ký tự đặc biệt.