2012-03-30 13 views
5

Ich habe 2 identische Tabellen in SQL Server 2008, eine ist die "Live" -Tabelle, die meine Anwendung ständig verwendet. Ich ziehe regelmäßig neue Datensätze während des Tages herunter und füge sie in eine "Staging" -Tabelle ein, aus der ich neue Datensätze ziehen und in die Live-Tabelle einfügen muss. Ich möchte keine Duplikate einfügen, nur für den Fall, dass sich einige Datensätze überschneiden. Es gibt 10 Spalten, die ich betrachten muss, um zu sehen, ob ein identischer Datensatz existiert. Ich habe mir einige TSQL-Beispiele angeschaut, aber bisher funktioniert keiner, ich habe auch überlegt, mit den Duplikaten umzugehen und nur über die DISTINCT-Werte zu berichten, aber DISTINCT Arbeitet für einen Datensatz, ich brauche es für 10 zu arbeiten. Irgendwelche Vorschläge?Füllen der Live-Tabelle mit Datensätzen aus der Zwischenspeichertabelle

Danke, Sam

Antwort

5

Dies ist ein idealer Anwendungsfall für NOT EXISTS - Sie so viele Kriterien überprüfen zu können, wie Sie überprüfen, mögen Sie keine Betrogene einfügen.

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

Das funktioniert super, danke! –

+0

@SamCromer gerne helfen. – JNK

Verwandte Themen