используйте merge и rowid
merge into target t
using
( with update_list as
(select t.rowid rid, s.n, t.s, s.s should_be_s
from target t, source s
where t.n = s.n
and s.s != t.s)
select u.* from update_list u
) x
on (t.rowid = x.rid)
when matched
then
update set t.s = x.should_be_s