【发布时间】:2021-12-30 08:13:12
【问题描述】:
我似乎不明白如何检查表中的 JSON 列中是否存在 ID。
让我告诉你我的布局是怎样的。
我有一个名为 teams 的表,该表当然包含我所有团队的列表。在此表中,我有一个名为“aMembers”的 JSON 类型的列。这包括一个带有该团队成员用户 ID 的 JSON。
示例 JSON:
{
"user_id" : [18, 55, 81, 26, 65]
}
现在假设我以用户 26 的身份登录。如果我想获取所有团队,其中 id 为 26 的用户存在于 JSON 类型的“aMembers”列中,我的查询会是什么样子?
我正在寻找的示例响应:
{
"Team1": {
"name": "Team1",
"description": "Team1 Description",
"created_at": "2020-05-20T12:00:00.000Z",
"updated_at": "2020-05-20T12:00:00.000Z"
},
"Team88": {
"name": "Team88",
"description": "Team88 Description",
"created_at": "2020-05-20T12:00:00.000Z",
"updated_at": "2020-05-20T12:00:00.000Z"
},
}
Mysql 5.7 版
【问题讨论】:
-
那不是有效的 JSON,应该是
{"ids": [12,13,14,15]}。你试过什么? -
@Firewizz 改变了我的例子。我的错,我亲手写了那个json。我现在还没有尝试太多。我主要是在谷歌上搜索,看看我是否能理解如何使用 JSON 列类型,但我似乎无法掌握它。
-
我正在寻找的示例响应 ???显示的所需响应无法从显示的微小源数据中获得。提供完整的示例 - 存储在 MySQl 中的源数据(CREATE TABLE + INSERT INTO)、外部输入标准/数据(带有数字数组的 JSON 对象?还有其他东西吗?)以及此源数据和标准的所需输出。还要指定精确 MySQL 版本。
-
@Akina 是的,我举例子的方式很糟糕。我的想法是这样的 SELECT * from TABLE where 26 EXISTS in JSON COLUMN?我知道这不是一个有效的查询,但这应该让我知道我在寻找什么。我将在一秒钟内添加版本。谢谢你告诉我。
-
您可以使用函数 JSON_CONTAINS()、JSON_OVERLAPS()、JSON_SEARCH() 测试显示的 JSON 中是否存在某些值...dev.mysql.com/doc/refman/8.0/en/json-function-reference.html