2012-03-30 18 views
5

Ho due tabelle identiche in SQL Server 2008, una è la tabella "In diretta" che la mia applicazione utilizza costantemente. Sto inserendo periodicamente nuovi record durante il giorno e inserendoli in una tabella di "staging" da cui ho bisogno di inserire nuovi record e inserirli nella tabella Live. Non voglio inserire duplicati nel caso in cui alcuni record siano sovrapposti. Ci sono 10 colonne che devo vedere per vedere se esiste un record identico, ho dato un'occhiata ad alcuni esempi di TSQL ma nessuno finora funziona, ho anche considerato di occuparmi dei duplicati e di riportare solo i valori DISTINCT ma DISTINCT uno lavora per un disco, ho bisogno che funzioni per 10. Qualche suggerimento?Riempimento tabella live con record dalla tabella di staging

Grazie, Sam

risposta

5

Si tratta di un caso d'uso ideale per NOT EXISTS - è possibile controllare il maggior numero di criteri che vuoi per verificare che non si inserire una vittima.

INSERT INTO Live 
SELECT <fields> 
FROM Staging s 
WHERE NOT EXISTS (SELECT 1 
        FROM Live l 
        WHERE s.FieldA = l.FieldA 
        AND s.FieldB = l.FieldB 
        <all your checks here>...) 
+0

Questo funziona benissimo, grazie! –

+0

@SamCromer felice di aiutare. – JNK

Problemi correlati