@sergeyiljin

Как мне вывести последние уникальные строки?

Есть чат с сообщениями вида id, message, from_id, to_id, date. Задача следующая. Мне нужно вывести самые свежие уникальные сообщения по одному последнему от всех пользователей, что мне писали. Например, Оля мне написала 5 сообщений, а Таня 3. Я ответил один раз Тане и 2 раза Оле. Нужно вывести последнее Олино и Последнее Танино, сортируя их по дате. Также, если моё сообщение окажется последним, то нужно вывести моё вместо пользовательских. Как мне лучше такое осуществить?
  • Вопрос задан
  • 68 просмотров
Пригласить эксперта
Ответы на вопрос 1
Melkij
@Melkij
PostgreSQL DBA
Поизвращаться можно разными способами
select distinct on (least(from_id, to_id)) least(from_id, to_id) = :myuid as is_my_message, date, message, case when :myuid = from_id then to_id else from_id end as recipient
from tablename
where from_id = :myuid or to_id = :myuid
order by least(from_id, to_id), date


Но штука эта явно выводиться будет часто и банально удобнее сделать отдельную таблицу диалогов, как в комментариях уже высказал идею V Sh. .
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы