Potresti usare una query come questa:
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)
(oppure puoi usare un'altra funzione aggregata per il testo, come group_concat, oppure devi unirti a tablename due volte per ottenere il primo o l'ultimo messaggio della chat, ma questo dipende da cosa vuoi restituire)