Използвайте cte
и задайте номера на редове, така че всички освен една за дублиращи се двойки да могат да бъдат изтрити.
with rownums as
(select m.*,
row_number() over(partition by ToUserId, FromUserId order by ToUserId, FromUserId) as rnum
from Message m)
delete r
from rownums r
where rnum > 1