我有一个查询,它获取从先前查询中获得的标签 ID,并从 post_tag_map 表中选择帖子 ID。
例如 $tagIds 可以是这样的"3,4,23,54"
.
'SELECT post_id FROM post_tag_map WHERE tag_id IN (' . $tagIds . ') ORDER BY `post_id`;'
此查询可以很好地实现其目的,但它会返回具有这些 tag_id 之一的任何 post_id。
我试图仅获取包含所有这些 tag_id 的 post_ids 。
例如,如果我搜索“新闻、政治、竞选”,我只想返回带有所有这三个标签的帖子,而不是任何具有这三个标签之一的帖子。
我如何更改我的查询?
编辑:根据要求,我的表结构是 3 个表。一个(post)带有post_id和post信息,一个(tag)带有tag_id和tag_name,还有post_tag_map,只是将两个Id映射在一起。
嗯,这会有点复杂
保留您的 IN 内容,同时对帖子进行分组以查找完全匹配的帖子
WHERE tag_id IN (3,4,23,54) GROUP BY `post_id` HAVING count(1) = 4;
其中 4 是我们正在寻找的标签数量
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)