Ideą zapytania jest to, że musisz dopasować liczbę rekordów do liczby wartości, które podałeś w WHERE klauzula.
SELECT ID
FROM tableName
WHERE tag IN (4, 8)
GROUP BY ID
HAVING COUNT(*) = 2
jeśli unikatowe ograniczenie nie zostało określone w tagu dla każdego identyfikatora, to DISTINCT jest potrzebne
SELECT ID
FROM tableName
WHERE tag IN (4, 8)
GROUP BY ID
HAVING COUNT(DISTINCT tag) = 2