Yes, "IN" internally does "distinct" of the values.
I would recommend to use other syntax for update, one which is similar to SELECT.
First, write the SELECT that returns the rows.
Then, replace part before "FROM" with "UPDATE tablealias SET xy=...".
For example:
--SELECT t1.*, t2.*
UPDATE t2 SET t2.Name=t1.name+'xy', t2.Address=...
FROM table1 t1
JOIN table2 t2 ON ...
WHERE ...