Oracle
 sql >> Datenbank >  >> RDS >> Oracle

SQL in vs Schnittmenge

In Oracle unter der Annahme (USER, HOBBY) eindeutig ist, könnten Sie ein GROUP BY verwenden Abfrage:

SELECT user
  FROM user_hobby
 WHERE hobby IN ('piano', 'sport')
 GROUP BY user
HAVING COUNT(*) = 2

Dadurch führt Oracle die Daten höchstens einmal durch, während INTERSECT jede Abfrage separat behandeln würde und daher zwei Durchgänge benötigen würde.