MYSQL JSON_合并和分组依据

MYSQL JSON_合并和分组依据,mysql,mysql-json,Mysql,Mysql Json,我有下面的数据表 我试图做的是GROUP BYtimestamp和JSON\u MERGE对象。我所期望的结果如下 我希望下面的查询可以工作,但我只是得到一个错误 SELECT timestamp, JSON_MERGE(json) FROM data GROUP BY timestamp, JSON_MERGE(json) 我得到的错误是 对本机函数“JSON_MERGE”的调用中的参数计数不正确 使用字符串函数组装所需的JSON,然后将其转换为JSON 示例数据 查询以合并按时间戳分

我有下面的数据表

我试图做的是
GROUP BY
timestamp和
JSON\u MERGE
对象。我所期望的结果如下

我希望下面的查询可以工作,但我只是得到一个错误

SELECT timestamp, JSON_MERGE(json)
FROM data
GROUP BY timestamp, JSON_MERGE(json)
我得到的错误是

对本机函数“JSON_MERGE”的调用中的参数计数不正确


使用字符串函数组装所需的JSON,然后将其转换为JSON

示例数据

查询以合并按时间戳分组的所有
json

select cast(
  concat('{',  -- wrap everything in root object '{ ... }'
    group_concat(
      -- strip parenthesis from individual item representation
      -- '{"foo": 1}' -> '"foo": 1'
      substring(json, 2, length(json) - 2)),
  '}') as json) json,
timestamp
from data
-- skip empty JSON values to avoid getting extra comma during 
-- group_concat
where json != JSON_OBJECT()  
group by timestamp;
查询结果

+------------------+---------------------+
| json             | timestamp           |
|------------------+---------------------|
| {"a": 1, "b": 2} | 2016-10-01 00:00:00 |
| {"c": 3}         | 2016-10-01 11:11:11 |
+------------------+---------------------+
几点注意事项:

  • 此代码段的行为不同于
    JSON\u MERGE()
    ,例如:
    • 当两个或多个属性具有相同名称时,其值为 覆盖而不是合并到值数组中
    • 它无法将对象与数组合并
  • 所提供的解决方案仅适用于作为顶级实体的对象 而不是数组。可以对其进行修改以使用阵列
  • If依赖于JSON对象的字符串表示形式,以 以花括号结尾
    {}
    。这在未来的版本中可能会改变 服务器的名称
+------------------+---------------------+
| json             | timestamp           |
|------------------+---------------------|
| {"a": 1, "b": 2} | 2016-10-01 00:00:00 |
| {"c": 3}         | 2016-10-01 11:11:11 |
+------------------+---------------------+