使用 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;
我有一个 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;