I am creating a mobile application that need to synchronize with the server, and In order to do so, I need to get last (N) messages in each conversation.
note that this query was worked but get only
last message in each conversation.
SELECT users.user_id AS user_id,
users.username,
users.picture,
users.last_seen,
me.message,
me.created_on
FROM messages me,
users
WHERE (me.sender_id=1
OR me.recipient_id=1)
AND ((me.sender_id=user_id
AND me.sender_id<>1)
OR (me.recipient_id=user_id
AND me.recipient_id<>1))
AND NOT exists
(SELECT 1
FROM messages me2
WHERE me2.id>me.id
AND ((me.sender_id=me2.sender_id
AND me.recipient_id=me2.recipient_id)
OR (me.sender_id=me2.recipient_id
AND me.recipient_id=me2.sender_id)))
ORDER BY me.created_on DESC