假设您想要的不仅仅是文章的ID:
SELECT a.id
,a.other_stuff
FROM articles a
JOIN article_category ac
ON ac.article_id = a.id
GROUP BY a.id
HAVING GROUP_CONCAT(DISTINCT ac.category_id ORDER BY ac.category_id SEPARATOR ',') = '1,2'
如果您想要的只是文章的ID,请尝试以下操作:
SELECT article_id
FROM article_category
GROUP BY article_id
HAVING GROUP_CONCAT(DISTINCT category_id ORDER BY category_id SEPARATOR ',') = '1,2'
请访问http://sqlfiddle.com/#!2/9d213/4实际操作
还应该补充一点这种方法的优点是它可以支持检查任何数量的类别,而不必更改查询。只需将“ 1,2”设置为字符串变量,然后更改传递给查询的内容即可。因此,您可以通过传递字符串“ 1,2,7”来轻松搜索具有类别1、2和7的文章。无需其他联接。