mysql版本:5.7.19
表:用户
表用户中的字段:竞赛
类型字段:json
野外竞赛中的数据示例
[{"name": "Mihaello Julders", "text": "any text", "photo": "photo.jpg", "profileLink": "any link"}, {"name": "Алексей Якобчук", "text": "any text", "photo": "photo.jpg", "profileLink": "any link"}]
问题:如果属性名包含指定的名称,则需要返回一个或多个对象。
我是否正确理解我需要使用
select
JSON_EXTRACT(members, "$[*].name") from `users` where JSON_EXTRACT(members, "$[*].name") = 'Mihaello Julders'
但是这不起作用,请告诉我如何正确地编写此查询?
2条答案
按热度按时间tct7dpnv1#
在学习了文档之后,我进行了下一个查询
这解决了我的问题
hsgswve42#
你的工作是什么
users
table是什么样子?如果你愿意的话n
行users.contests
正如你在问题中提到的,假设table上有contests
列,这会给你
n
用户竞争的行,其中users.members
(json列)具有指定的name
财产(米哈耶罗·朱尔德)。编辑
有关更多信息,请参阅文档。上面提到的解决方案返回一个空集。这可能是因为您的users表是空的,或者json有问题——要么您查找了错误的名称,要么name属性不在您认为的位置。
如果您的表中有值,这个答案将返回一个非空集
members
柱状