表中有一个列
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;
小提琴