Nah, ini yang terbaik yang bisa saya pikirkan pada jam 4:30 pagi:
SELECT distinct tag_id FROM
(SELECT pt1.post_id FROM pt1
INNER JOIN tags t1 ON (pt1.tag_id = t1.id)
WHERE t1.id IN (1, 2)
GROUP BY pt1.post_id
HAVING COUNT(DISTINCT t1.id) = 2) MatchingPosts
INNER JOIN pt2 ON (MatchingPosts.post_id = pt2.post_id)
WHERE (pt2.tag_id NOT IN (1, 2))
(1, 2) adalah tag yang Anda cari dan jumlahnya, tentu saja, harus sesuai dengan jumlah tag yang Anda gunakan untuk memfilter.
Berikut adalah contoh (Perhatikan saya sedikit mengubah data)