我在mysql数据库中有一个表,其中有一个json类型的列city,它存储了一个具有以下结构的city对象的json数组:
{
"cities": [
{
"id": 1,
"name": "Mumbai",
"countryID": "9"
},
{
"id": 2,
"name": "New Delhi",
"countryID": "9"
},
{
"id": 3,
"name": "Abu Dhabi",
"countryID": "18"
}
]
}
我想从城市数组中选择对象 countryID = 90
但由于对象数组存储在一个列中,因此我陷入了困境 city
这阻止了我做 (*)
与 WHERE JSON_CONTAINS(city->'$.cities', JSON_OBEJECT('countryID', '90'))
.
我的问题看起来像这样,我什么都没有得到, SELECT JSON_EXTRACT(city, '$.cities') FROM MyTable WHERE JSON_CONTAINS(city->'$.cities', JSON_OBJECT('countryID', '90'))
如果有人能给我指出正确的方向或者给我一个解决这个问题的方法,那将是一个很大的帮助。
谢谢
1条答案
按热度按时间ymdaylpp1#
如果您使用的是mysql 8.0,那么有一个特性叫做
JSON table functions
. 它将json数据转换为表格形式,然后可以过滤结果。下面给出了实现相同目标的查询
db小提琴可以在这里找到
关于json表函数的更多信息可以在这里找到