我有一个表“故事”,如下所示:
+++++++++++++++++++++++++++++++++++++++++++
| id | keywords |
+++++++++++++++++++++++++++++++++++++++++++
| 1 | romance,movie,drama |
| 2 | newmovie,horor,comedy |
| 3 | movie,scifi |
| 4 | newmovie,romance,drama,asia |
| 5 | kids,movie |
+++++++++++++++++++++++++++++++++++++++++++
我尝试在关键字字段中搜索“电影”,如下所示:
SELECT id FROM story WHERE keywords LIKE '%movie%'
结果是
1,2,3,4,5
但在本例中,我希望结果为 1,3,5
(不包括 newmovie
的字段值)。有人可以帮助我如何查询吗?
感谢您的帮助..
最佳答案
您想使用 find_in_set
像这样:
SELECT id FROM story WHERE find_in_set('movie', keywords) > 0;
尽管您确实应该考虑标准化您的表结构。
在这种情况下,您可以在一行中存储一个关键字,那么查询将如下所示:
select id from story where keyword = 'movie';
事情就这样结束了。不需要繁重的字符串函数。
你可以有这样的结构:
keywords(id, name);
story(story_id,. . ., keyword_id);
然后,您可以像这样简单地将两者连接起来:
select s.*
from story s
inner join keywords k on s.keyword_id = k.id
where k.name = 'movie';
关于MySQL查询-如何在字段中查找特定字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41943406/