Sto provando a confrontare due tabelle, SQL Server, per verificare alcuni dati. Voglio restituire tutte le righe da entrambe le tabelle in cui i dati sono nell'uno o nell'altro. In sostanza, voglio mostrare tutte le discrepanze. Ho bisogno di controllare tre pezzi di dati in questo modo, FirstName, LastName e Product.query sql per restituire le differenze tra due tabelle
Sono abbastanza nuovo per SQL e sembra che molte delle soluzioni che trovo siano troppo complicate. Non devo preoccuparmi dei NULL.
ho iniziato cercando qualcosa di simile:
SELECT DISTINCT [First Name], [Last Name], [Product Name] FROM [Temp Test Data]
WHERE ([First Name] NOT IN (SELECT [First Name]
FROM [Real Data]))
Sto avendo difficoltà a prendere questo ulteriore però.
Grazie!
EDIT:
sulla base della risposta da @treaschf Ho cercato di utilizzare una variante della seguente query:
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)
Ma io continuo a ricevere 0 risultati indietro, quando so che c'è è almeno una riga in td che non è in d.
EDIT:
Ok, penso che ho capito. Almeno nei miei pochi minuti di test sembra funzionare abbastanza bene.
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])))
questo è fondamentalmente sta per dirmi che cosa è nel mio dati di test che non è nei miei dati reali. Che è completamente bene per quello che devo fare.
L'esempio EXCEPT di seguito è circa 100 volte più veloce di questo. –
qualcuno può confermare se funziona? non funziona sulla mia parte, inoltre non vedo il punto di "AS d" se "d" non è usato da nessuna parte, potrebbe esserci un errore da qualche parte? –