在UPDATE中添加嵌套的对象参数

时间:2019-05-09 11:45:50

标签: mysql json

我将这样的json格式存储在数据库中

{"fooKey": "fooValue", "barKey": "barValue"}

我正在尝试使用JSON_SET运行UPDATE查询,以便添加一些其他内容,所以

UPDATE `table`
SET `dbcol` = JSON_SET(`dbcol`, '$.newitem', 'newvalue')
WHERE `id` = 12;

问题是我想添加一些嵌套元素,所以我的最终结果应该像这样

{"fooKey":"fooValue","barKey":"barValue", "newItem":"newValue", "anotherNewItem":{"subItemKey":"subItemValue", "anotherSubItemKey":"anotherSubItemValue"}}

我该怎么做?

1 个答案:

答案 0 :(得分:1)

对于您给出的特定示例,您可以嵌套两个JSON_SET调用,并使用JSON_OBJECT创建要插入键anothernewitem的数据:

UPDATE table
SET dbcol = JSON_SET(JSON_SET(dbcol, '$.newitem', 'newvalue'),
                     '$.anothernewitem', 
                     JSON_OBJECT('subitemkey', 'subitemvalue', 'anothersubitemkey', 'anothersubitemvalue'))
WHERE id = 12;

Demo on dbfiddle