e
Size: a a a
e
A
select max(id) as id, from_id, to_id from messages group by from_id, to_id
- это не совсем точно, поскольку чат двунаправленный, но для понимания логики вполне сойдет. В идеале надо группировать по обоим направлениям (это сложнее)БГ
SELECT CASE WHEN m.to_id = ? THEN m.from_id ELSE m.to_id END AS "interlocutor", u.name, m.text
FROM messages m
JOIN users u ON
u.id = m.to_id OR u.id = m.from_id
WHERE m.to_id = ? OR m.from_id = ?
GROUP BY interlocutor
ORDER BY m.id DESC
A
БГ
БГ
A
A
A
A
БГ
A
A
A
A
A
БГ
select max(id) as id, from_id, to_id from messages group by from_id, to_id
- это не совсем точно, поскольку чат двунаправленный, но для понимания логики вполне сойдет. В идеале надо группировать по обоим направлениям (это сложнее)