Die angegebene MySQL-Abfrage versucht, Diskrepanzen zwischen Daten in den Noten- und Bewertungstabellen zu identifizieren, indem vorhandene Zeilen aus der Note ausgeschlossen werden in der Bewertung. Die ursprüngliche Abfrage ruft jedoch keine Ergebnisse ab, wenn der angegebene Name („JOHN“) nicht in der Auswertung gefunden wird.
Das „NOT IN“ Der in der ursprünglichen Abfrage verwendete Operator ist problematisch, wenn eine der beteiligten Spalten möglicherweise NULL-Werte enthält. In MySQL stellt NULL einen unbekannten oder fehlenden Wert dar und seine Interaktion mit bestimmten Operatoren kann zu unerwarteten Ergebnissen führen.
Um dieses Problem zu beheben, wird empfohlen Vermeiden Sie die Verwendung von „NOT IN“, wenn Sie mit Spalten arbeiten, die möglicherweise NULL-Werte enthalten. Erwägen Sie stattdessen die Verwendung alternativer Ansätze:
Die folgende modifizierte Abfrage verwendet NOT EXISTS für Erzielen Sie die gewünschten Ergebnisse:
SELECT G.ID_Courses, C.ID_Courses, G.NAME, C.NAME, G.ID_Courses, E.NAME, E.Year, G.Year FROM Grade AS G INNER JOIN Course AS C ON G.ID_Courses = C.ID_Courses LEFT JOIN Evaluation AS E ON G.NAME = E.NAME AND G.Year = E.Year WHERE NOT EXISTS( SELECT 1 FROM Evaluation WHERE NAME = G.NAME AND Year = G.Year ) AND G.NAME = 'JOHN' AND G.Year = 1 GROUP BY G.ID_Courses;
Durch die Verwendung von NOT EXISTS stellt diese Abfrage sicher, dass Zeilen aus Grade, die keine entsprechenden Zeilen in der Bewertung haben, weiterhin in der Ausgabe enthalten sind.
Das obige ist der detaillierte Inhalt vonWie kann man mehrere MySQL-Tabellen effizient abfragen, um Unstimmigkeiten beim Umgang mit NULL-Werten zu finden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!