MySQL SELECT来自多个值,仅返回完全匹配

时间:2014-04-04 18:34:39

标签: php mysql

我有一个查询,它从前一个查询获取标记ID,并从post_tag_map表中选择post id。

$ tagIds例如可以是"3,4,23,54"

'SELECT post_id FROM post_tag_map WHERE tag_id IN (' . $tagIds . ') ORDER BY `post_id`;'

此查询可以正常工作,但它会返回任何具有任何tag_ids的post_id。

我试图只获取包含所有这些tag_ids的post_id。

例如,如果我搜索"新闻,政治,广告系列",我只想返回已使用所有这三个标签标记的帖子,而不是任何包含三个标签之一的帖子。

如何更改查询?

编辑:根据请求,我的表结构是3个表。一个(post)包含post_id和post信息,一个(tag)带有tag_id和tag_name,以及post_tag_map,只是将两个Ids映射到一起。

1 个答案:

答案 0 :(得分:5)

嗯,它会有点复杂

继续使用您的IN内容以及群组帖子以查找具有完全匹配的内容

WHERE tag_id IN (3,4,23,54) GROUP BY `post_id` HAVING count(1) = 4;

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