我正在为网站创建过滤器系统,但是,无法使用JSON数据搜索MySQL数据库列。
列数据的示例与以下示例完全相同:
[“自我”,“家庭作业”,“讨论”]
整个数据库表如下:
id | name | type | subject | work
__________________________________________________________________________
1 | 'name1' | 'type1' | ["a", "b"] | ["Self", "Homework", "Discussion"]
2 | 'name2' | 'type2' | ["b"] | ["Self", "Discussion"]
1 | 'name3' | 'type3' | ["a", "b"] | ["Self", "Homework"]
我想选择homework
数组中包含work
的所有行。
注意:由于它们具有相同的数组结构,因此我也需要适用于subject
的解决方案。
我尝试了这个MySQL命令,但是它们似乎不起作用。
SELECT * FROM materialData WHERE JSON_SEARCH(materialWork, 'all', 'Self')
SELECT * FROM materialData WHERE JSON_EXTRACT(materialWork, '$') = 'Self'
这两个都返回:
MySQL returned an empty result set
有什么办法可以基于列数组中的值选择行?
我从mysql.com上阅读了一些MySQL文档,但没有参加完整的课程。我只了解PHP课程中的MySQL基础知识。因此,请不要判断任何简单或愚蠢的错误。
编辑:
还有别的办法吗?创建一个新表将非常麻烦,尤其是在将来扩展项目时。
基本上,用户将从提供的42个选项中选择一个或多个主题(这是我目前提供的选项,将来会扩展主题的数量)。因此,据我了解,我必须制作一个包含42列的表格?
再次对这个愚蠢的问题表示歉意!
但是,为work
创建新表不是问题。 ?