За да получите само 13 и 15, направете следното:
select user_id
from my_table
group by user_id
having max(case when role_id = 13 then 1 else 0 end) = 1 and -- has 13
max(case when role_id = 15 then 1 else 0 end) = 1 and -- has 15
max(case when role_id not in (13, 15) then 1 else 0 end) = 0 -- nothing else
Това проверява дали 13 и 15 са в набора user_id. След това проверява дали няма нищо друго в комплекта.
Осъзнавам, че използването на клаузата за наличие с оператора case изглежда неудобно в началото. Можете обаче да изразите много логика за различни комбинации от неща в комплекта.