从多个值中选择MySQL SELECT,仅返回完全匹配项

dcc*_*ics 1 php mysql

我有一个查询,该查询采用从先前查询中获得的标签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`;'
Run Code Online (Sandbox Code Playgroud)

该查询可以很好地实现其目的,但是它返回具有其中任何一个tag_id的post_id。

我正在尝试仅获取包含所有这些tag_id的post_id。

例如,如果我搜索“新闻,政治,竞选”,则只想返回已被所有这三个标签标记的帖子,而不是任何包含这三个标签之一的帖子。

如何更改查询?

编辑:根据要求,我的表结构是3表。一个(post)具有post_id和post信息,一个(tag)具有tag_id和tag_name,以及post_tag_map,仅将两个ID映射在一起。

You*_*nse 5

好吧,它将变得更加复杂

保留您的IN内容,但也可以对帖子进行分组以查找完全匹配的帖子

WHERE tag_id IN (3,4,23,54) GROUP BY `post_id` HAVING count(1) = 4;
Run Code Online (Sandbox Code Playgroud)

其中4是我们正在寻找的标签数量