Je zou een zoekopdracht als deze kunnen gebruiken:
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)
(of je kunt een andere geaggregeerde functie voor de tekst gebruiken, zoals group_concat, of je moet twee keer deelnemen aan tablename om het eerste of het laatste bericht van de chat te krijgen, maar dit hangt af van wat je wilt retourneren)