Dengan asumsi Anda menginginkan lebih dari sekadar id artikel:
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'
Jika yang Anda inginkan hanyalah id artikel, coba ini:
SELECT article_id
FROM article_category
GROUP BY article_id
HAVING GROUP_CONCAT(DISTINCT category_id ORDER BY category_id SEPARATOR ',') = '1,2'
Lihat aksinya di http://sqlfiddle.com/#!2/9d213/4
Harus juga menambahkan bahwa keuntungan dari pendekatan ini adalah dapat mendukung pemeriksaan sejumlah kategori tanpa harus mengubah kueri. Buat saja '1,2' sebagai variabel string dan ubah apa yang diteruskan ke kueri. Jadi, Anda dapat dengan mudah mencari artikel dengan kategori 1, 2, dan 7 dengan melewatkan string '1,2,7'. Tidak perlu bergabung lagi.