Сначала написал нечто сложное, нифнига у меня не работало. Для теста сократил до короткого.
SELECT *
FROM `pm`
WHERE sender = 1
GROUP BY sender
ORDER BY `time` DESC
LIMIT 0 , 30
Проблема в том, что групируется он получая первое добавленное сообщение, а мне надо последнее, как в ордере. Я понимаю, что это логично, но вот как выйти из ситуации что то не знаю.