Ich habe eine Zieltabelle, die UserId, ItemId und SomeData haben. Ich habe eine Quellentabelle, die ich verwenden möchte, um das Ziel basierend auf fehlender ItemId zu aktualisieren.SQL-Merge, wenn ich zwei Spalten übereinstimmen muss
Vielleicht leichter erklärt in einem Beispiel ...
Dies ist das Ziel und die vorhandenen Daten:
UserId ItemId SomeData
1 1 x
2 2 y
2 3 z
Und ich habe eine andere temporäre Quelltabelle, die einige ItemId für einen bestimmten Benutzer hält. Wenn diese UserId diese ItemId bereits hat, ignoriere sie. Wenn nicht, füge es hinzu.
UserId ItemId SomeData
1 1 x <--- this ItemId already exist for UserId=1, ignore
1 2 a <--- the next two ItemId don't exist for UserId=1, add them
1 3 b
Ergebnismenge Ich erwarte ist wie folgt:
UserId ItemId SomeData
1 1 x
2 2 y
2 3 z
1 2 a <--- added
1 3 b <--- added
ich mit der richtigen Art und Weise bin kämpfen, um die Tabelle in dem Merge-Befehl zu verbinden, so dass ich die fehlenden ItemId Datensätze einfügen kann der Benutzer.
MERGE Target T
USING Source S
ON T.UserId = S.UserId --This doesn't get the right matches but neither does joining it by ItemId
WHEN NOT MATCHED
THEN
INSERT bah bah bah
Wie kann ich das tun?
Wenn Sie sich für 'Userid' und' Itemid' interessieren, fügen Sie sie beide zu Ihrer 'ON'-Sektion hinzu:' T.UserId = S.UserId UND T.ItemID = S.ItemID' –