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

Tạo định dạng JSON với GROUP_CONCAT trong MySQL?

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.