gpt4 book ai didi

mysql - 从对象数组中选择与 MYSQL JSON 中的属性匹配的对象

转载 作者:行者123 更新时间:2023-11-29 16:57:13 24 4
gpt4 key购买 nike

我在 MySQL 数据库中有一个包含 1 个 JSON 类型列 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')) 执行 (*)

我的查询看起来像这样,但我没有得到任何结果,

从 MyTable WHERE JSON_CONTAINS(city->'$.cities', JSON_OBJECT('countryID', '90')) 中选择 JSON_EXTRACT(city, '$.cities')

如果有人能给我指出正确的方向或给出解决方案,那将是一个很大的帮助。

谢谢

最佳答案

如果您使用 MySQL 8.0,则有一个名为 JSON 表函数 的功能。它将 JSON 数据转换为表格形式。然后您可以过滤结果。

下面给出了实现相同效果的查询

Select  country
FROM json_cal,
JSON_TABLE(
city,
"$.cities[*]" COLUMNS(
country JSON PATH "$",
NESTED PATH '$.countryID' COLUMNS (countryID TEXT PATH '$')
)
) AS jt1
where countryID = 90;

可以找到 DB Fiddle here

有关 JSON 表函数的更多信息,请参阅 here

关于mysql - 从对象数组中选择与 MYSQL JSON 中的属性匹配的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52480624/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com