Попробуйте
SELECT * FROM messages where id in (SELECT max(id) FROM messages GROUP BY from_id ) order by id desc