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

แสดงข้อมูลเป็น Key-Value Pairs ใน MySQL ด้วย JSON_OBJECTAGG

ฟังก์ชัน 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 หรือรายงานที่ต้องการโครงสร้างข้อมูลซ้อนกัน