Heim >Datenbank >MySQL-Tutorial >Wie kann man fehlende Datensätze mithilfe von „NOT EXISTS' von SQL effizient finden?

Wie kann man fehlende Datensätze mithilfe von „NOT EXISTS' von SQL effizient finden?

Patricia Arquette
Patricia ArquetteOriginal
2024-12-10 09:52:10968Durchsuche

How to Efficiently Find Missing Records Using SQL's `NOT EXISTS`?

SELECT * WHERE NOT EXISTS: Fehlende Datensätze finden

Die SQL-Abfrage „SELECT * von Mitarbeitern WHERE NOT EXISTS (SELECT name FROM eotm_dyn)“ „zielt darauf ab, alle Zeilen aus der Tabelle „Mitarbeiter“ abzurufen, in denen deren Namen nicht vorhanden sind Tabelle „eotm_dyn“. Diese Abfrage ist jedoch unvollständig und liefert keine Ergebnisse.

Um die Abfrage abzuschließen, ist es notwendig, die beiden Tabellen in einem gemeinsamen Feld zu verbinden, normalerweise einem eindeutigen Bezeichnerfeld. Unter der Annahme, dass die Tabellen im Feld „employeeID“ verknüpft sind, lautet die korrigierte Abfrage wie folgt:

SELECT *
FROM employees e
WHERE NOT EXISTS
(
    SELECT null
    FROM eotm_dyn d
    WHERE d.employeeID = e.id
)

Die Unterabfrage „NOT EXISTS“ prüft, ob in der Tabelle „eotm_dyn“ Zeilen vorhanden sind, in denen die „employeeID“ steht. entspricht der „id“ der aktuellen Zeile in der Tabelle „employees“. Wenn keine solchen Zeilen vorhanden sind, gibt die äußere Abfrage die gesamte Zeile aus der Tabelle „employees“ zurück. Durch diesen Ansatz wird sichergestellt, dass nur Mitarbeiter ohne Einträge in der Tabelle „eotm_dyn“ ausgewählt werden.

Alternativ könnte die Abfrage auch über einen LEFT JOIN mit anschließendem Filter für NULL-Werte geschrieben werden:

SELECT *
FROM employees e
LEFT JOIN eotm_dyn d
ON e.id = d.employeeID
WHERE d.name IS NULL

Diese Methode ist jedoch möglicherweise weniger effizient als die Verwendung der Unterabfrage NOT EXISTS, insbesondere bei großen Datenbanken.

Das obige ist der detaillierte Inhalt vonWie kann man fehlende Datensätze mithilfe von „NOT EXISTS' von SQL effizient finden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn