使用 python 更新 mysql json 查询

Update mysql json query with python

我有一个 json 字段假设来自 table T1 和字段 F1 {"X":[{"a":"1","t":"2"},{"a":"2","t":"4"}]} 如果我想 更新 我的 t=2 到 a:1 的 t=10,该怎么做? 正常的 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"}

提前致谢..

您的path参数有误。您需要索引到 X 数组才能找到要更改的 属性。

UPDATE T1
SET F1 = JSON_SET(F1, '$.X[0].t', '10')
WHERE id = 1

要搜索 a = 1 并更新相应的 t,您可以使用 JSON_SEARCH。它 returns 是一个带有引号的字符串,因此您必须删除它们。然后你必须用.t替换.a以获得你想要设置的属性。

UPDATE T1
SET F1 = JSON_SET(F1, REPLACE(REPLACE(JSON_SEARCH(F1, 'one', '1', null, '$**.a'), '"', ''), '.a', '.t'), '10')
WHERE id = 1;