如何在MySql中合并多个JSON对象

时间:2018-07-26 13:59:32

标签: mysql

我们正在使用MySql 5.7.12版本

我正在尝试将多个JSON对象合并为一个JSON对象单个对象,并希望删除整数字段的引号

select JSON_OBJECT(count(1), status) from table_name where status in ('X','Y','Z') group by status;

我得到的结果

+------------------------------+
| JSON_OBJECT(status,count(1)) |
+------------------------------+
| {"X": 6}                     |
| {"Y": 93}                    |
| {"Z": 75}                    |
+------------------------------+

我想要以下结果

{"X":6,"Y":93,"Z":75}

我尝试使用json_merge函数包装上面的查询,但没有得到预期的结果。

谢谢

2 个答案:

答案 0 :(得分:0)

如果您使用的是MySQL版本5.7.22或更高版本,则有一个名为JSON_OBJECTAGG的JSON函数应该在这里工作:

SELECT JSON_OBJECTAGG(status, cnt)
FROM 
(
    SELECT status, COUNT(*) AS cnt
    FROM table_name
    GROUP BY status
) t;

这假定您要对整个表进行JSON聚合。

答案 1 :(得分:0)

怎么样,它只是对现有查询进行后处理:

Deck#shuffle