我在数据库中存储了一个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

10-05 20:32