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 姓名 年龄 地址 薪水
1 Ramesh 32 艾哈迈达巴德 2000.00
2 Khilan 25 德里 1500.00
3 Kaushik 23 科塔 2000.00
4 Chaitali 25 孟买 6500.00
5 Hardik 27 博帕尔 8500.00
6 Komal 22 海得拉巴 4500.00
7 Muffy 24 因多尔 10000.00

在这里,我们使用 MySQL JSON_ARRAYAGG() 函数将列SALARY的实体列为单个 JSON 数组:

SELECT JSON_ARRAYAGG(SALARY) As Result
From CUSTOMERS;

这将产生以下结果:

结果
[ 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;

这将产生以下结果:

年龄 薪水
22 [4500.00]
23 [2000.00]
24 [10000.00]
25 [1500.00, 6500.00]
27 [8500.00]
32 [2000.00]
广告