Datensätze auswählen, die nicht in einer anderen Tabelle vorhanden sind

Aus DBWiki
Wechseln zu: Navigation, Suche

Aufgabe

Du wilst Datensätze aus einer Tabelle oder Auswahlabfrage auswählen, die nicht in einer anderen Tabelle bzw. Auswahlabfrage vorkommen.

Lösung

Im Grunde lässt sich die Aufgabe über 4 verschiedene Methoden lösen.

  • NOT EXISTS
    Das ist ist eine schnelle Methode. Sie kommt mit wenig Code aus und ist sehr gut verständlich zu lesen.
  • LEFT JOIN in Verbindung mit IS NULL
    Das ist auch eine schnelle Methode. Vom Verständnis her ist sie vielleicht nicht ganz so gut zu lesen wie die Methode zuvor.
  • EXCEPT
    Eine kurze Methode, die aber schwieriger in eine bestehende Abfragestruktur zu integrieren ist. Außerdem wird sie nicht von allen SQL-Dialekten unterstützt.
  • NOT IN
    Eine schwierige Methode, die bei möglichen NULL-Werten noch eine besondere Behandlung benötigt. Bei größerem Datenbestand ist sie deutlich langsamer als die drei zuvor erwähnten Methoden.

Anwendung

Dieser DBFiddle zeigt die Anwendung aller vier Methoden.