Sie könnten eine Abfrage wie diese verwenden:
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)
(oder Sie können eine andere aggregierte Funktion für den Text verwenden, wie group_concat, oder Sie müssen Tabellenname zweimal beitreten, um die erste oder letzte Nachricht des Chats zu erhalten, aber dies hängt davon ab, was Sie zurückgeben möchten)