Вот вам go:
update user_role set user_role = 'Z'
where user_id in (
select user_id
from user_role
where user_role in ('A', 'B')
group by user_id
having count(*) = 1)
and user_role in ('A', 'B');
Результат:
select * from user_role;
USER_ID USER_ROLE CREATED
------- --------- ----------
U007 A 2020-01-01
U007 B 2020-01-02
U007 C 2020-01-03
U009 A 2020-01-05
U009 B 2020-01-06
U008 Z 2020-01-04
Вот сценарий данных, который я использовал в H2 1.4.197:
create table user_role (
user_id varchar(10),
user_role varchar(10),
created date,
primary key (user_id, user_role)
);
insert into user_role (user_id, user_role, created) values
('U007', 'A', '2020-01-01'),
('U007', 'B', '2020-01-02'),
('U007', 'C', '2020-01-03'),
('U008', 'A', '2020-01-04'),
('U009', 'A', '2020-01-05'),
('U009', 'B', '2020-01-06');