Heim >Datenbank >MySQL-Tutorial >Wie kann man fehlende Datensätze mithilfe von „NOT EXISTS' von SQL effizient finden?
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!