W Oracle, zakładając (USER, HOBBY)
jest unikalny, możesz użyć GROUP BY
zapytanie:
SELECT user
FROM user_hobby
WHERE hobby IN ('piano', 'sport')
GROUP BY user
HAVING COUNT(*) = 2
Dzięki temu Oracle wykona co najwyżej jedno przejście danych, podczas gdy INTERSECT traktowałby każde zapytanie osobno i dlatego potrzebowałby dwóch przejść.