寻找匹配两个关键字(两个关键字,而不仅仅是其中一个)的帖子。
我猜以下 MySQL 查询没有返回匹配项的原因是匹配“climate”的关键字和匹配“recycling”的关键字在 t_keywords 表中的行不同。你将如何进行?
SELECT t_posts.id, t_posts.title
FROM t_posts, t_keywords, t_posts_keywords
WHERE t_posts.id = t_posts_keywords.id_post
AND t_keywords.id = t_posts_keywords.id_keyword
AND t_keywords.keyword = "climate"
AND t_keywords.keyword = "recycling"
GROUP BY t_posts.id
最佳答案
SELECT t_posts.id, t_posts.title
FROM t_posts, t_keywords, t_posts_keywords
WHERE t_posts.id = t_posts_keywords.id_post
AND t_keywords.id = t_posts_keywords.id_keyword
AND t_keywords.keyword IN ('climate', 'recycling')
GROUP BY t_posts.id HAVING count(t_keywords.id) = 2
您已经按帖子分组,因此您需要检查给定的帖子在原始数据中有两行,每个关键字一行 - 这就是 HAVING 的用途。如果您要匹配的关键字数量可变,那么“2”也必须是可变的,由应用程序替换为正确的计数。
关于MySQL 搜索匹配多个关键字,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30638505/