Можете да използвате заявка като тази:
select
min(id) as id,
least(sender,recipient) as sender,
greatest(sender,recipient) as recipient
min(text) as text
from
tablename
group by
least(sender,recipient),
greatest(sender,recipient)
(или можете да използвате друга обобщена функция за текста, като group_concat, или трябва да се присъедините към tablename два пъти, за да получите първото или последното съобщение от чата, но това зависи от това, което искате да върнете)