如何在mysql表中搜索json数组字段中的字段?

Posted

技术标签:

【中文标题】如何在mysql表中搜索json数组字段中的字段?【英文标题】:How to search in mysql table where field in json array field? 【发布时间】:2020-10-04 06:00:13 【问题描述】:

我有一个带有 JSON 数组字段的表, 我想要一个基于此字段从另一个表返回结果的查询

table_a

+----+-------------+
| id | interestIds |
+----+-------------+
|  1 | [1, 2, 6, 7]|
+----+-------------+

table_b

+----+-------------+
| id | country     |
+----+-------------+
|  1 | Ghana       |
|  2 | Grenada     |
|  3 | Jordan      |
|  4 | Latvia      |
|  5 | Malawi      |
|  6 | Mexico      |
|  7 | Moldova     |
+----+-------------+

我想要像这样的查询

select * from table_b where id in (select interestIds from table_a where id = 1)

【问题讨论】:

【参考方案1】:

你可以使用json_search():

select b.*
from table_b
where exists (
    select 1 from table_a a where json_search(a.interestIds, 'one', b.id) is not null
)

【讨论】:

以上是关于如何在mysql表中搜索json数组字段中的字段?的主要内容,如果未能解决你的问题,请参考以下文章

mysql数据库中某个字段存的是json数据,如何对json数据中的数据进行操作?

在 mySQL 中的整个表中搜索字符串

如何将数据库中的一个表中的字段拿出几个封装成json,用于页面显示?

如果 mySQL 中的表中存在列名/字段名,则搜索数据库

获取mysql中的多条记录并存入json数组中显示在HTML表格单单字段中

mysql JSON路径遍历数组的正确语法?