Просто дополняя то, что сказал Деварт, ниже код не упорядочивается в соответствии с вопросом:
SELECT t1.* FROM messages t1
JOIN (SELECT from_id, MAX(timestamp) timestamp FROM messages GROUP BY from_id) t2
ON t1.from_id = t2.from_id AND t1.timestamp = t2.timestamp;
Предложение GROUP BY должно быть в основном запросе, так как нам нужно сначала изменить порядок " SOURCE ", чтобы получить нужную« группировку »так:
SELECT t1.* FROM messages t1
JOIN (SELECT from_id, MAX(timestamp) timestamp FROM messages ORDER BY timestamp DESC) t2
ON t1.from_id = t2.from_id AND t1.timestamp = t2.timestamp GROUP BY t2.timestamp;
С уважением,