Выберите последнее сообщение каждого разговора - PullRequest
0 голосов
/ 06 июня 2018

У меня есть две таблицы:

чат (from это только кто отправил первое сообщение)

id | id_from | id_to
1  | 1       | 2
2  | 1       | 3
3  | 3       | 2
4  | 4       | 1

сообщение

id | content | date                | id_chat | id_from | id_to
1  | hi      | 2017-10-04 23:14:41 | 1       | 1       | 2
2  | hello   | 2017-10-04 23:15:03 | 1       | 2       | 1
3  | heey    | 2017-10-04 23:40:00 | 4       | 4       | 1

И я хочу получать последнее сообщение каждого разговора.

Я пытался (1 - это идентификатор пользователя, вошедшего в систему):

SELECT MAX(id) AS idMessage, id_from, id_to, content, date 
FROM message 
WHERE 1 IN (id_from, id_to) 
GROUP BY id_chat
ORDER BY idMessage 
DESC LIMIT 10

IЯ получаю последние разговоры, но я получаю первое сообщение каждого разговора, а не последнее.Как я могу получить последнее сообщение?

Ответы [ 2 ]

0 голосов
/ 06 июня 2018
select m1.*
from messages m1
join
(
  SELECT MAX(id) as id
  FROM message
  GROUP BY id_chat
) m2 on m1.id = m2.id
0 голосов
/ 06 июня 2018
SELECT m.content as idMessage, m.id_from, m.id_to, m.date  from message as m JOIN chat c WHERE <Logged_ID> = m.id_chat ORDER BY m.date DESC LIMIT 1
...