ฟังก์ชัน JSON_OBJECTAGG() ใน MySQL (รองรับตั้งแต่เวอร์ชัน 5.7.22+) ใช้รวมคอลัมน์ Key และ Value เป็นออบเจ็กต์ JSON เดียว โดยจัดกลุ่มตามคอลัมน์ที่กำหนด
ตัวอย่างการสร้างตาราง
mysql> create table DemoTable (
Id int,
FirstName varchar(100),
Age int );
Query OK, 0 rows affected (0.56 sec)
เพิ่มข้อมูล (มี Id ซ้ำ)
mysql> insert into DemoTable values(10,'John',23); Query OK, 1 row affected (0.18 sec) mysql> insert into DemoTable values(20,'Carol',21); Query OK, 1 row affected (0.13 sec) mysql> insert into DemoTable values(10,'Sam',24); Query OK, 1 row affected (0.15 sec) mysql> insert into DemoTable values(20,'Chris',20); Query OK, 1 row affected (0.13 sec)
แสดงข้อมูลทั้งหมด
mysql> select * from DemoTable;
+------+-----------+------+ | Id | FirstName | Age | +------+-----------+------+ | 10 | John | 23 | | 20 | Carol | 21 | | 10 | Sam | 24 | | 20 | Chris | 20 | +------+-----------+------+ 4 rows in set (0.00 sec)
คำสั่ง JSON_OBJECTAGG จัดกลุ่มตาม Id
mysql> select Id, JSON_OBJECTAGG(FirstName, Age) from DemoTable GROUP BY Id;
ผลลัพธ์
+------+-------------------------------+
| Id | JSON_OBJECTAGG(FirstName,Age) |
+------+-------------------------------+
| 10 | {"Sam": 24, "John": 23} |
| 20 | {"Carol": 21, "Chris": 20} |
+------+-------------------------------+
2 rows in set (0.07 sec)
คำอธิบาย: JSON_OBJECTAGG(key, value) จะสร้าง JSON object โดยใช้คอลัมน์แรกเป็น Key และคอลัมน์ที่สองเป็น Value แล้วจัดกลุ่มตาม GROUP BY Id ฟังก์ชันนี้มีประโยชน์สำหรับ API ที่ต้องส่งข้อมูลเป็น JSON หรือรายงานที่ต้องการโครงสร้างข้อมูลซ้อนกัน