Suponiendo que desea algo más que la identificación del artículo:
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'
Si todo lo que desea es la identificación del artículo, intente esto:
SELECT article_id
FROM article_category
GROUP BY article_id
HAVING GROUP_CONCAT(DISTINCT category_id ORDER BY category_id SEPARATOR ',') = '1,2'
Véalo en acción en http://sqlfiddle.com/#!2/9d213/4
También debería agregar que la ventaja de este enfoque es que puede admitir la verificación de cualquier número de categorías sin tener que cambiar la consulta. Simplemente convierta '1,2' en una variable de cadena y cambie lo que se pasa a la consulta. Por lo tanto, podría buscar fácilmente artículos con las categorías 1, 2 y 7 pasando una cadena de '1,2,7'. No se necesitan uniones adicionales.