MySQL 5.7 - 增加 JSON 中的数字

Dev*_*evK 6 mysql sql

是否可以批量增加特定的 JSON 属性?

例如,我的 JSON 列被称为metadata,如下所示:

{"counter": 0, ...}
Run Code Online (Sandbox Code Playgroud)

我可以更新多行,以便通过单个查询使计数器递增 1 吗?

编辑:

由于这被标记为过于宽泛,让我举一个确切的例子。

表上的数据x,其上唯一的列是metadata,它有 3 行:

{"counter": 0}, {"counter": 1},{"counter": 0, "something": "somethign"}

期望的结果是一个查询将这 3 个更新为:

{"counter": 1}, {"counter": 2},{"counter": 1, "something": "somethign"}

不用说,我不是 MySQL 专家,我也没有设法从 MySQL 文档中找到适合我的查询。如有帮助,将不胜感激。

rev*_*evo 10

您可以JSON_EXTRACT与以下一起使用JSON_SET

UPDATE table SET col = JSON_SET(col, '$.counter', JSON_EXTRACT(col, '$.counter') + 1)
Run Code Online (Sandbox Code Playgroud)