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

Hiển thị bản ghi dạng key-value pairs với JSON_OBJECTAGG trong MySQL


Giới thiệu

MySQL 5.7+ hỗ trợ hàm JSON_OBJECTAGG(key, value) để gom nhiều cặp key-value thành một object JSON, rất tiện cho API trả về dữ liệu cấu trúc.

Ví dụ minh họa

Tạo bảng và chèn dữ liệu

mysql> CREATE TABLE DemoTable (
    Id INT,
    FirstName VARCHAR(100),
    Age INT
);
mysql> INSERT INTO DemoTable VALUES 
(10, 'John', 23), (20, 'Carol', 21), (10, 'Sam', 24), (20, 'Chris', 20);

Xem dữ liệu

mysql> SELECT * FROM DemoTable;
+------+-----------+------+
| Id   | FirstName | Age  |
+------+-----------+------+
| 10   | John      | 23   |
| 20   | Carol     | 21   |
| 10   | Sam       | 24   |
| 20   | Chris     | 20   |
+------+-----------+------+

Truy vấn JSON_OBJECTAGG

mysql> SELECT Id, JSON_OBJECTAGG(FirstName, Age) 
FROM DemoTable 
GROUP BY Id;

Kết quả

+------+-------------------------------+
| Id   | JSON_OBJECTAGG(FirstName,Age) |
+------+-------------------------------+
| 10   | {"Sam": 24, "John": 23}       |
| 20   | {"Carol": 21, "Chris": 20}    |
+------+-------------------------------+

Các hàm JSON hữu ích khác

  • JSON_OBJECT(key, val, ...): Tạo object từ cặp cố định.
  • JSON_ARRAYAGG(val): Gom giá trị thành mảng JSON.
  • JSON_EXTRACT(json_col, '$.key'): Trích xuất giá trị từ JSON.
  • -> / ->>: Toán tử rút gọn cho JSON_EXTRACT.

Lưu ý

  • Yêu cầu MySQL 5.7.22+ / 8.0+.
  • Key trùng lặp trong cùng group: chỉ giữ giá trị cuối (undefined behavior trước 8.0.17).
  • Key không được NULL.
  • Kết quả kiểu JSON, có thể dùng trực tiếp trong ứng dụng.