是否有一个快速的方法来更新一个json列数据与MySQL?



表中有一个列

table: articles
rows:  id           type: int(11)
json_data    type: json
created_at   type: datetime
updated_at   type: datetime

现在json_data

{
"version":"1",
"title":"A good product",
"body":"Very good",
"published_at":null
}

想要基于当前元数据将其数据更新为新的json模式格式:

{
"version":"2",
"items":[
{
"title":"A good product",
"body":"Very good",
"published_at":null
}
]
}

如果不使用编程语言,如何做到这一点。有可能通过MySQL的过程来实现吗?

UPDATE articles
SET json_data = JSON_OBJECT('version', 2, 
'items', JSON_ARRAY(JSON_REMOVE(json_data, '$.version')));

小提琴


如果运行两次update命令,数据将嵌套并破坏格式- fiddle。你知道如何避免它跑很多次吗?——iooi

添加适当的WHERE,检查"$.version",仅更新该值为1的行:

UPDATE articles
SET json_data = JSON_OBJECT('version', 2, 'items', JSON_ARRAY(JSON_REMOVE(json_data, '$.version')))
WHERE json_data->>"$.version" = 1;

小提琴

最新更新