• No need for row by row, wash your mouth out! 🙂 Just use an INNER JOIN on both fields for the update (run this first).

    UPDATE t

    Set field1 = s.field1, field2 = s.field2

    FROM SourceTable S

    JOIN TargetTable T on S.Key1 = T.Key1 and S.Key2 = T.Key2

    Then use a LEFT JOIN on both the fields to check for non-existent records in the target table (target PK field will be NULL) so that you know which records to INSERT.

    INSERT TargetTable(Field1, Field2)

    SELECT S.Field1, S.Field2

    From SourceTable S

    Left Join TargetTable on S.Key1 = TargetTable.Key1 and S.Key2 = TargetTable.Key2

    Where TargetTable.Key1 Is Null

    All this code is untested, but hopefully you get the idea.

    If you haven't even tried to resolve your issue, please don't expect the hard-working volunteers here to waste their time providing links to answers which you could easily have found yourself.