Вы не можете использовать функцию MAX вне оператора GROUP BY.Вам нужно будет сделать инструкцию SELECT внутри вашего запроса UPDATE, чтобы получить это значение правильно.Например:
UPDATE users
SET users.lastmessage = (SELECT MAX(messages.id) AS m_id FROM messages WHERE messages.name = 'Tom')
WHERE users.name = 'Tom'
Заметьте, однако, что это немного ограничено в том, что это только обновление Тома.Если вы хотите обновить каждого пользователя, вы можете сделать это следующим образом:
UPDATE users
SET users.lastmessage = (SELECT MAX(messages.id) AS m_id FROM messages WHERE messages.name = users.name)
Это обновит каждого пользователя с датой последнего отправленного им сообщения.