我有一个带有JSON列的MySQL 5.7.12数据库中的表。
列中的数据具有以下结构(json数组可能包含多个json对象):
[{"ste": "I", "tpe": "PS"}, {"ste": "I", "tpe": "PB"}]
我想编写一个UPDATE
查询,将tpe=PB
的ste
的值更改。
这是我的尝试:
更新用户SET ext = JSON_SET(JSON_SEARCH(ext, 'one', 'PB', NULL, '$**.tpe'), '$.tpe', 'A');
查询的输出应该是:
[{"ste": "I", "tpe": "PS"}, {"ste": "A", "tpe": "PB"}]
它不起作用 - 它将列更新为:
"$[0].tpe"
我该如何使其工作?
编辑
我认为这更有意义,但语法仍然有问题
UPDATE user SET ext = JSON_SET(ext->JSON_SEARCH(ext, 'one', 'PS', NULL, '$**.tpe'), '$.tpe', 'A');
希望你仍然需要这个。
尝试在你的
JSON_SET
中使用变量路径。使用JSON_SEARCH
来获取变量路径,然后用绝对路径tpe
替换为ste
来更新其值。对我有效!