mysql中json类型字段的查询

如下图:
mysql数据表的某个字段是:json类型,存储的是 列表 套 字典(字典是:用户id+用户名,可以说是所有参与的用户的列表;
现在我有单个id+用户名,某个人的。

问题:
怎么查询某个用户,如果在参与者列表里面,就返回这条数据呢?

img

你可以用json_contains函数的

比如


SELECT *
FROM your_table
WHERE JSON_CONTAINS(participants, '{"id": your_id_value, "username": "your_username_value"}');

来自GPT,供你参考,应该可以帮你解决问题:

在MySQL中查询JSON类型数据的方法如下:

  1. 使用JSON_EXTRACT函数:该函数用于提取JSON类型数据中的特定字段或值。语法如下:

    SELECT JSON_EXTRACT(column_name, '$.field_name') FROM table_name;
    

    其中,column_name是包含JSON数据的列名,field_name是要提取的字段名。

  2. 使用->操作符:该操作符用于直接访问JSON对象的属性。语法如下:

    SELECT column_name->'$.field_name' FROM table_name;
    

    其中,column_name是包含JSON数据的列名,field_name是要访问的字段名。

  3. 使用JSON_CONTAINS函数:该函数用于判断JSON类型数据是否包含某个特定的值。语法如下:

    SELECT * FROM table_name WHERE JSON_CONTAINS(column_name, 'value', '$.field_name');
    

    其中,column_name是包含JSON数据的列名,value是要判断的值,field_name是要判断的字段名。

需要注意的是,查询JSON类型数据可能需要使用到MySQL的JSON函数(如JSON_EXTRACT、JSON_CONTAINS等),因此在使用之前,请确保你的MySQL版本支持这些函数。

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/910258
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:Mysql中使用json格式存储数据好吗?
  • 除此之外, 这篇博客: mysql根据json字段内容作为查询条件(包括json数组),检索数据中的 mysql根据json字段的内容检索查询数据 部分也许能够解决你的问题。
  • 以下回答由chatgpt基于相关博客总结生成:

    可以使用MySQL的JSON_CONTAINS函数进行查询。这个函数可以用来检查JSON类型字段中是否包含某个值。

    下面是一个使用JSON_CONTAINS函数查询的示例代码:

    SELECT * FROM table_name WHERE JSON_CONTAINS(json_column, '{"id": 123, "name": "John"}');
    

    其中,table_name是你的表名,json_column是存储参与者列表的JSON类型字段名。{"id": 123, "name": "John"}是要查询的用户id和用户名。

    这个查询语句将返回包含指定用户的数据行。如果数据表中有多个参与者,只要有一个参与者与指定用户匹配,都会返回相应的数据。

    如果要查询包含某个用户id,则可以使用以下代码:

    SELECT * FROM table_name WHERE JSON_SEARCH(json_column, 'all', '123', NULL, '$[*].id') IS NOT NULL;
    

    其中,table_name是你的表名,json_column是存储参与者列表的JSON类型字段名,123是要查询的用户id。

    这个查询语句将返回包含指定用户id的数据行。

    希望这个解决方案对你有帮助。如果还有其他问题,请随时提问。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^