I often have to merge data from different tables in PostgreSQL, this is a code snippet I use:
MERGE
INTO
users u
USING new_users n ON
u.user_uuid = n.user_uuid
WHEN NOT MATCHED THEN
INSERT
VALUES (n.user_uuid,
n.first_name,
n.last_name)
WHEN MATCHED THEN
UPDATE
SET
first_name = n.first_name,
last_name = n.last_name
RETURNING u.*;