MySQL - JSON_OBJECTAGG() 函数
MySQL JSON_OBJECTAGG() 函数接受表中两列的名称作为参数,并返回一个 JSON 对象字面量,该字面量以第一个参数的实体作为键,以第二个参数的实体作为值。
JSON 对象字面量以键值对的形式存储,并用大括号 {} 括起来。键必须是字符串,值必须是有效的 JSON 数据类型:字符串、数字、对象、数组、布尔值、NULL。每个键值对以逗号分隔。
如果指定列没有行,此函数返回 NULL。
语法
以下是 MySQL JSON_OBJECTAGG() 函数的语法 -
JSON_OBJECTAGG(key, value);
参数
此方法接受两个参数。如下所示:-
key: 表达式,其不同的值将用作结果 JSON 对象中的键。
value: 表达式,其值将与结果 JSON 对象中相应的键关联。
返回值
此函数将键值对聚合为 JSON 对象。
示例
以下是演示此函数用法的示例。假设我们使用 CREATE 语句创建了一个名为 CUSTOMERS 的表,如下所示:-
CREATE TABLE CUSTOMERS ( ID INT AUTO_INCREMENT, NAME VARCHAR(20) NOT NULL, AGE INT NOT NULL, ADDRESS CHAR (25), SALARY DECIMAL (18, 2), PRIMARY KEY (ID) );
以下查询将 7 条记录插入到上面创建的表中 -
INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY) VALUES (1, 'Ramesh', 32, 'Ahmedabad', 2000.00 ), (2, 'Khilan', 25, 'Delhi', 1500.00 ), (3, 'Kaushik', 23, 'Kota', 2000.00 ), (4, 'Chaitali', 25, 'Mumbai', 6500.00 ), (5, 'Hardik', 27, 'Bhopal', 8500.00 ), (6, 'Komal', 22, 'Hyderabad', 4500.00 ), (7, 'Muffy', 24, 'Indore', 10000.00 );
要验证记录是否已插入,请执行以下查询 -
Select * From CUSTOMERS;
以下是 CUSTOMERS 表 -
ID | NAME | AGE | ADDRESS | SALARY |
---|---|---|---|---|
1 | Ramesh | 32 | Ahmedabad | 2000.00 |
2 | Khilan | 25 | Delhi | 1500.00 |
3 | Kaushik | 23 | Kota | 2000.00 |
4 | Chaitali | 25 | Mumbai | 6500.00 |
5 | Hardik | 27 | Bhopal | 8500.00 |
6 | Komal | 22 | Hyderabad | 4500.00 |
7 | Muffy | 24 | Indore | 10000.00 |
以下查询创建一个包含键值对的 JSON 对象,使用客户名称作为键,以客户工资作为值 -
SELECT JSON_OBJECTAGG(NAME, SALARY) as Salaries from CUSTOMERS;
这将产生以下结果 -
Salaries |
---|
{ "Komal": 4500.00, "Muffy": 10000.00, "Hardik": 8500.00, "Khilan": 1500.00, "Ramesh": 2000.00, "Kaushik": 2000.00, "Chaitali": 6500.00 } |
以下查询根据年龄对客户的工资进行分组 -
SELECT AGE, JSON_OBJECTAGG(NAME, SALARY) as Salaries FROM CUSTOMERS GROUP BY AGE;
这将产生以下结果 −
AGE | Salaries |
---|---|
22 | {"Komal": 4500.00} |
23 | {"Kaushik": 2000.00} |
24 | {"Muffy": 10000.00} |
25 | {"Khilan": 1500.00, "Chaitali": 6500.00} |
27 | {"Hardik": 8500.00} |
32 | {"Ramesh": 2000.00} |