記事の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<で実際の動作を確認してください。 / a>
また、このアプローチの利点は、クエリを変更することなく、任意の数のカテゴリのチェックをサポートできることです。 '1,2'を文字列変数にして、クエリに渡される内容を変更するだけです。したがって、「1,2,7」の文字列を渡すことで、カテゴリ1、2、および7の記事を簡単に検索できます。追加の結合は必要ありません。