สร้าง JSON String จากข้อมูลในตารางด้วย GROUP_CONCAT และ CONCAT
MySQL เวอร์ชันเก่าที่ยังไม่มีฟังก์ชัน JSON_ARRAYAGG/JSON_OBJECTAGG สามารถสร้าง JSON string เองได้ด้วยการรวม CONCAT และ GROUP_CONCAT
รูปแบบคำสั่ง (Syntax)
SELECT
group_column,
GROUP_CONCAT(
CONCAT('{"key1":"', column1, '", "key2":"', column2, '"}')
) AS json_result
FROM yourTableName
GROUP BY group_column;
ตัวอย่างการใช้งาน
สร้างตาราง JsonFormatDemo:
CREATE TABLE JsonFormatDemo (
UserId INT,
UserName VARCHAR(100),
UserEmail VARCHAR(100)
);
เพิ่มข้อมูล (มี UserId ซ้ำ):
INSERT INTO JsonFormatDemo VALUES
(101, 'John', 'John@gmail.com'),
(101, 'Bob', 'John@gmail.com'),
(102, 'Carol', 'Carol@gmail.com'),
(103, 'Sam', 'Sam@gmail.com');
สร้าง JSON จัดกลุ่มตาม UserId:
SELECT
UserId,
GROUP_CONCAT(
CONCAT('{"Name":"', UserName, '", "Email":"', UserEmail, '"}')
) AS JsonFormat
FROM JsonFormatDemo
GROUP BY UserId;
ผลลัพธ์:
| 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"} |
หมายเหตุ: MySQL 5.7+ ควรใช้ฟังก์ชัน JSON แบบ Native เช่น JSON_ARRAYAGG() และ JSON_OBJECT() ซึ่งจัดการ escaping และรูปแบบ JSON ให้ถูกต้องและปลอดภัยกว่า