L'idea della query è che devi abbinare il numero di record al numero di valori che hai fornito in WHERE
clausola.
SELECT ID
FROM tableName
WHERE tag IN (4, 8)
GROUP BY ID
HAVING COUNT(*) = 2
se il vincolo univoco non è stato specificato sul tag per ogni ID, allora DISTINCT
è necessario
SELECT ID
FROM tableName
WHERE tag IN (4, 8)
GROUP BY ID
HAVING COUNT(DISTINCT tag) = 2