我有一个json字段,假设来自表T1和字段F1 {"X":[{"a":"1","t":"2"},{"a":"2","t":"4"}]}
如果我想更新我的 t = 2到t = 10获取:1 ,该怎么做?
什么是正常的mysql语法?
我试过这样的事情,它只是分别更新t = 10值
UPDATE T1 set F1 = JSON_SET(F1, '{"a":"1","$.t", "10"}') where id = 1;
尝试使用此..只需将另一个值添加到同一字段,如
{"X":[{"a":"1","t":"2"},{"a":"2","t":"4"}],"t":"10"}
提前致谢..
答案 0 :(得分:0)
您的path
参数错误。您需要索引到X
数组才能转到要更改的属性。
UPDATE T1
SET F1 = JSON_SET(F1, '$.X[0].t', '10')
WHERE id = 1
要搜索a = 1
并更新相应的t
,您可以使用JSON_SEARCH
。它返回一个带引号的字符串,因此您必须删除它们。然后,您必须将.a
替换为.t
以获取您要设置的属性。
UPDATE T1
SET F1 = JSON_SET(F1, REPLACE(REPLACE(JSON_SEARCH(F1, 'one', '1', null, '$**.a'), '"', ''), '.a', '.t'), '10')
WHERE id = 1;