Ich versuche, zwei Tabellen, SQL Server zu vergleichen, um einige Daten zu überprüfen. Ich möchte alle Zeilen von beiden Tabellen zurückgeben, in denen Daten entweder in der einen oder der anderen sind. Im Wesentlichen möchte ich alle Diskrepanzen zeigen. Ich muss dabei drei Daten prüfen, FirstName, LastName und Product.SQL Abfrage, um Unterschiede zwischen zwei Tabellen
Ich bin ziemlich neu in SQL und es scheint, als ob viele der Lösungen, die ich finde, über komplizierende Dinge sind. Ich muss mir keine Sorgen um NULL machen.
Ich begann so etwas wie dies versuchen:
SELECT DISTINCT [First Name], [Last Name], [Product Name] FROM [Temp Test Data]
WHERE ([First Name] NOT IN (SELECT [First Name]
FROM [Real Data]))
Ich habe Probleme, obwohl diese weiter nehmen.
Danke!
EDIT:
Basierend auf der Antwort von @treaschf Ich habe eine Variation der folgenden Abfrage zu verwenden versucht:
SELECT td.[First Name], td.[Last Name], td.[Product Name]
FROM [Temp Test Data] td FULL OUTER JOIN [Data] AS d
ON td.[First Name] = d.[First Name] AND td.[Last Name] = d.[Last Name]
WHERE (d.[First Name] = NULL) AND (d.[Last Name] = NULL)
Aber ich erhalte immer 0 Ergebnisse zurück, wenn ich weiß, dass es ist mindestens 1 Zeile in TD, die nicht in d ist.
EDIT:
Ok, ich glaube, ich es herausgefunden. Zumindest in meinen wenigen Testminuten scheint es gut genug zu funktionieren.
SELECT [First Name], [Last Name]
FROM [Temp Test Data] AS td
WHERE (NOT EXISTS
(SELECT [First Name], [Last Name]
FROM [Data] AS d
WHERE ([First Name] = td.[First Name]) OR ([Last Name] = td.[Last Name])))
Das wird im Grunde genommen um mir zu sagen, was in meinen Testdaten, die nicht in meinen realen Daten sind. Was ist völlig in Ordnung für das, was ich tun muss.
Das folgende EXCEPT-Beispiel ist etwa 100x schneller als dieses Beispiel. –
kann jemand bestätigen, ob das funktioniert? funktioniert nicht an meinem Ende, sehe auch nicht den Punkt von "AS d", wenn "d" nirgendwo benutzt wird, könnte da irgendwo ein Fehler liegen? –