使用json\u set更新简单的json数据类型没有问题,但是使用nested就不起作用了。
查询的格式如下:
{
"textures":[
{
"label":"test",
"types":{
"t_1":0,
"t_2":0
}
},
{
"label":"KEK",
"types":{
"t_1":0,
"t_2":0
}
}
],
"weapons":[
{
"name":"WW_SHT",
"ammo":0
},
{
"name":"WW_DSS",
"ammo":0
}
]
}
有些行可能是空的,有些行没有“武器”结构。
我尝试的是:
UPDATE `player` SET `info` = COALESCE(
JSON_MERGE(
`info`,
JSON_OBJECT('textures',
JSON_OBJECT('types',
JSON_OBJECT('t_1', '1', 't_2', '0')
)
)
),
JSON_INSERT(
JSON_OBJECT(),
'$.textures',
JSON_OBJECT('types',
JSON_OBJECT('t_1', '1', 't_2', '0')
)
)
);
我要更新t\u 1以将值从0更改为1
2条答案
按热度按时间qqrboqgw1#
你真的在收集你的代码。尝试用json\u set或json\u replace之类的更新
你的代码是有点难以阅读和理解与许多功能嵌入在一起
在mysql 8中不推荐使用btw json\u merge
你会想读书的https://elephantdolphin.blogspot.com/2018/09/json-paths-and-mysql-json-functions.html
bq8i3lrv2#
参考json\u replace()
但是,这仅替换第0个纹理中的值。如果有多个纹理,则可以找出有多少个纹理:
p、 美国:这可能是一个应用程序,最好使用传统的规范化数据库。实际上,我还没有在mysql中看到任何json的例子,如果表是以传统的方式设计的话,那么这些例子就不会更容易了。