JSON_OBJECT 和 JSON_ARRAYAGG 是 MySQL 中用于处理 JSON 数据类型的函数。这两个函数可以帮助你更轻松地构建和操作 JSON 数据。
JSON_OBJECT
JSON_OBJECT 函数用于生成一个 JSON 对象。你可以为这个函数提供一系列键值对,它会返回一个包含这些键值对的 JSON 对象。
语法:
sql复制代码
JSON_OBJECT(key1, val1, key2, val2, ..., keyN, valN) |
示例:
sql复制代码
SELECT JSON_OBJECT('name', 'John', 'age', 30); |
输出:
json复制代码
{"name": "John", "age": 30} |
JSON_ARRAYAGG
JSON_ARRAYAGG
是一个聚合函数,用于将一组值聚合到一个 JSON 数组中。这对于将多行数据转换为一个 JSON 数组特别有用。
语法:
sql复制代码
JSON_ARRAYAGG(expr) |
示例:
假设你有一个名为 students
的表,其中包含学生的姓名:
sql复制代码
CREATE TABLE students ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50) ); INSERT INTO students (name) VALUES ('Alice'), ('Bob'), ('Charlie');
你可以使用 JSON_ARRAYAGG
来获取所有学生的姓名并将其放入一个 JSON 数组中:
sql复制代码
SELECT JSON_ARRAYAGG(name) AS student_names FROM students; |
输出:
json复制代码
["Alice", "Bob", "Charlie"] |
结合使用
你还可以结合使用 JSON_OBJECT
和 JSON_ARRAYAGG
来构建更复杂的 JSON 结构。例如,如果你想为每个学生生成一个包含其姓名和 ID 的 JSON 对象,并将这些对象放入一个数组中,你可以这样做:
sql复制代码
SELECT JSON_ARRAYAGG(JSON_OBJECT('id', id, 'name', name)) AS student_objects FROM students; |
这将返回一个包含所有学生信息的 JSON 数组。
创建时间|更新时间
createAt TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updateAt TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE