Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

สร้างข้อมูล JSON Format ใน MySQL ด้วย GROUP_CONCAT

สร้าง 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;

ผลลัพธ์:

UserIdJsonFormat
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 ให้ถูกต้องและปลอดภัยกว่า