UPDATE real_table R SET (col1, col2, col3,...) = SELECT col1, col2, col3,... FROM scratch S WHERE R.key_val1 = S.key_val1 AND R.key_val2 = S.key_val2 AND ... ; #### INSERT INTO real_table R SELECT * FROM scratch S WHERE NOT EXISTS ( SELECT 1 FROM real_table WHERE key_val1 = S.key_val1 AND key_val2 = S.key_val2 AND ... )