次のようなクエリを使用できます:
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に2回参加する必要がありますが、これは何を返したいかによって異なります)