Heim > Datenbank > MySQL-Tutorial > Hauptteil

Wie kann man fehlende Mitarbeiterdatensätze mithilfe von SQL effizient abrufen?

Mary-Kate Olsen
Freigeben: 2024-11-26 20:31:10
Original
611 Leute haben es durchsucht

How to Efficiently Retrieve Missing Employee Records Using SQL?

Abrufen fehlender Daten mit „SELECT * WHERE NOT EXISTS“

Der Benutzer beabsichtigt, alle Datensätze aus der Tabelle „Mitarbeiter“ zu extrahieren, sofern angegeben Zellen sind in der Tabelle „eotm_dyn“ nicht vorhanden. Um dies zu erreichen, verwendet der Benutzer die folgende Abfrage:

SELECT * from employees WHERE NOT EXISTS (SELECT name FROM eotm_dyn)
Nach dem Login kopieren

Diese Abfrage liefert jedoch durchweg keine Ergebnisse, obwohl er weiß, dass etwa 20 Namen fehlen.

Verstehen des Problems

Der Fehler liegt darin, dass die beiden Tabellen in der Abfrage nicht verknüpft werden konnten. Derzeit wertet die Abfrage lediglich das Vorhandensein von Namen in der Tabelle „eotm_dyn“ aus, ohne auf die Tabelle „employees“ zu verweisen. Dies gibt immer „false“ zurück, es sei denn, die Tabelle „eotm_dyn“ ist leer.

Lösung: Tabellen verbinden

Um die Tabellen zu verbinden und die fehlenden Namen herauszufiltern, ändern Sie die Abfrage wie folgt:

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

In dieser modifizierten Abfrage wird implizit ein LEFT JOIN zwischen den „Mitarbeitern“ durchgeführt. und „eotm_dyn“-Tabellen basierend auf dem gemeinsamen „employeeID“-Feld. Die WHERE-Klausel verwendet dann NOT EXISTS, um alle Mitarbeiterdatensätze herauszufiltern, deren Namen (oder Mitarbeiter-ID) nicht in der Tabelle „eotm_dyn“ vorhanden sind.

Alternativer Ansatz: LEFT JOIN und NULL-Werte filtern

Alternativ könnte man einen LEFT JOIN verwenden und NULL-Werte als herausfiltern folgt:

SELECT  *
FROM    employees e
LEFT JOIN
        eotm_dyn d ON e.employeeID = d.employeeID
WHERE   d.name IS NULL
Nach dem Login kopieren

Dieser Ansatz ist möglicherweise weniger effizient als die Verwendung von NOT EXISTS, bietet aber eine unkomplizierte Methode zum Abrufen der fehlenden Daten.

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

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage