Чтобы получить последнее сообщение по атрибуту телефона, вы можете использовать самостоятельное соединение
select a.*
from messages a
join (
select phone, max(id) id
from messages
group by phone
) b on a.phone = b.phone and a.id = b.id
Или использовать левое соединение
select a.*
from messages a
left join messages b on a.phone = b.phone and a.id < b.id
where b.phone is null