MySQL - JSON_ARRAYAGG() 函数
MySQL JSON_ARRAYAGG() 函数将指定列(或给定表达式)的内容聚合为单个 JSON 数组。
JSON 数组与其他编程语言中的任何简单数组一样,可以存储各种数据类型的值,例如字符串、数组、布尔值、数字、对象或 NULL。该数组可以包含零个、一个或多个有序值,这些值以逗号分隔,并用方括号括起来。
JSON_ARRAYAGG() 函数将表中某一列的值组合成一个这样的 JSON 数组;但是,这些值的顺序是不确定的(因此,它们可以按任意顺序显示)。如果指定的列没有行,此函数将返回 NULL。
语法
以下是 MySQL JSON_ARRAYAGG() 函数的语法 -
JSON_ARRAYAGG(expr);
参数
此方法接受一个参数。相关说明如下 -
expr:一个表达式或列,其值将被聚合到 JSON 数组中。
返回值
此函数返回一个包含聚合值的 JSON 数组。如果没有匹配的行,则返回 NULL。
示例
在下面的查询中,我们使用 CREATE TABLE 语句创建一个名为 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 |
这里,我们使用 MySQL JSON_ARRAYAGG() 函数将 SALARY 列的实体列成一个 JSON 数组 -
SELECT JSON_ARRAYAGG(SALARY) As Result From CUSTOMERS;
这将产生以下结果 -
Result |
---|
[ 2000.00, 1500.00, 2000.00, 6500.00, 8500.00, 4500.00, 10000.00 ] |
以下查询根据年龄对客户的工资进行分组 -
SELECT AGE, JSON_ARRAYAGG(SALARY) As Salaries From CUSTOMERS GROUP BY AGE;
这将产生以下结果 -
AGE | Salaries |
---|---|
22 | [4500.00] |
23 | [2000.00] |
24 | [10000.00] |
25 | [1500.00, 6500.00] |
27 | [8500.00] |
32 | [2000.00] |