Ich denke, ich gehe mit diesem den richtigen Weg ... Bitte nehmen Sie mit, da mein SQL nicht das beste ist
Ich versuche, eine Datenbank abzufragen, um alles aus einer Tabelle auszuwählen, in der bestimmte Zellen in einer anderen nicht vorhanden sind. Das macht nicht viel Sinn, aber ich hoffe, dass dieser Code es tut
SELECT * from employees WHERE NOT EXISTS (SELECT name FROM eotm_dyn)
Im Grunde habe ich eine Tabelle mit einer Liste der Mitarbeiter und ihrer Details. Dann noch eine Tabelle mit einigen weiteren Details, einschließlich ihres Namens. Wo sich der Name nicht in der Tabelle eotm_dyn befindet, was bedeutet, dass für sie kein Eintrag vorhanden ist, möchte ich genau sehen, wer sie sind, oder mit anderen Worten, was genau fehlt.
Die obige Abfrage gibt nichts zurück, aber ich weiß, dass 20 Namen fehlen, also habe ich es offensichtlich nicht richtig verstanden.
Kann jemand helfen?
group by X having exist [row with employeeID = e.id]
ODER
ODER
quelle
NOT IN
nicht wie erwartet funktionieren , wennname
hatnull
Werte. Sehen Sie sich das Video ab 36 Minuten und 20 Sekunden an. SESSION: 10 Techniken zur Optimierung von Abfragen, die jeder SQL-Programmierer kennen sollte (Kevin Kline, Aaron Bertrand) .Sie können LEFT JOIN ausführen und bestätigen, dass die verknüpfte Spalte NULL ist.
Beispiel:
quelle
Gibt niemals Datensätze zurück, es
eotm_dyn
sei denn, diese sind leer. Sie müssen eine Art von Kriterien aufSELECT name FROM eotm_dyn
wieAngenommen, die beiden Tabellen sind durch eine Fremdschlüsselbeziehung verbunden. Zu diesem Zeitpunkt können Sie eine Vielzahl anderer Optionen verwenden, einschließlich eines LEFT JOIN. Das Optimierungsprogramm behandelt sie jedoch in den meisten Fällen in der Regel gleich.
quelle
Sie können sich auch diese verwandte Frage ansehen . Dieser Benutzer berichtete, dass die Verwendung eines Joins eine bessere Leistung bietet als die Verwendung einer Unterabfrage.
quelle