История изменений
Исправление theNamelessOne, (текущая версия) :
Можно попробовать через DISTINCT ON
:
select distinct on(least(sender_id, recipient_id),
greatest(sender_id, recipient_id))
*
from chat_messages
order by least(sender_id, recipient_id)
, greatest(sender_id, recipient_id)
, id desc;
Можно ещё вместо id desc
использовать created_at desc
(если индекс есть).
Но я бы просто последние сообщения в отдельную таблицу клал upsert-ом. Ну или поудобнее структуру БД придумал.
Исправление theNamelessOne, :
Можно попробовать через DISTINCT ON
:
select distinct on(least(sender_id, recipient_id),
greatest(sender_id, recipient_id))
*
from chat_messages
order by least(sender_id, recipient_id)
, greatest(sender_id, recipient_id)
, id desc;
Можно ещё вместо id desc
использовать created_at desc
(если индекс есть).
Но я бы просто последние сообщения в отдельную таблицу клал upsert-ом.
Исходная версия theNamelessOne, :
Можно попробовать через DISTINCT ON
:
select distinct on(least(sender_id, recipient_id),
greatest(sender_id, recipient_id))
*
from chat_messages
order by least(sender_id, recipient_id)
, greatest(sender_id, recipient_id)
, id desc;
Можно ещё вместо id desc
использовать created_at desc
(если индекс есть).
Но я бы просто последние сообщения в отдельную таблицу клал upsert-ом.