Du kan använda den här lösningen. Detta får alla produkter som innehåller ALLA sökord 1, 23 och 54:
SELECT a.*
FROM products a
INNER JOIN product_tags b ON a.product_id = b.product_id
WHERE b.tag_id IN (1,23,54)
GROUP BY a.product_id
HAVING COUNT(1) = 3
Där 3
är antalet objekt i din WHERE IN
lista, så att du kan justera därefter baserat på antalet taggar du vill kontrollera.