我在数据库中存储了一个json格式,如下所示
{"fooKey": "fooValue", "barKey": "barValue"}
我试图使用JSON集运行一个更新查询,以便添加一些额外的内容,因此
UPDATE `table`
SET `dbcol` = JSON_SET(`dbcol`, '$.newitem', 'newvalue')
WHERE `id` = 12;
问题是我想添加一些嵌套元素,所以我的最终结果应该如下所示
{"fooKey":"fooValue","barKey":"barValue", "newItem":"newValue", "anotherNewItem":{"subItemKey":"subItemValue", "anotherSubItemKey":"anotherSubItemValue"}}
我该怎么做?
最佳答案
对于您给出的特定示例,可以嵌套两个JSON_SET
调用,并使用JSON_OBJECT
创建要为keyanothernewitem
插入的数据:
UPDATE table
SET dbcol = JSON_SET(JSON_SET(dbcol, '$.newitem', 'newvalue'),
'$.anothernewitem',
JSON_OBJECT('subitemkey', 'subitemvalue', 'anothersubitemkey', 'anothersubitemvalue'))
WHERE id = 12;
Demo on dbfiddle