Si no hay restricciones únicas, intente:
SELECT post_id
FROM tags
WHERE tag_id = 1 OR tag_id = 3
GROUP BY post_id
HAVING count(DISTINCT tag_id) = 2;
O usa este HAVING
cláusula, si intenta detectar solo dos tag_id
valores:
HAVING MIN(tag_id) <> MAX(tag_id)
Si post_id y tag_id tienen una restricción única, esto también debería funcionar:
SELECT post_id
FROM tags
WHERE tag_id = 1 OR tag_id = 3
GROUP BY post_id
HAVING count(*) = 2;