MAX is used because you want the latest value of the datetime, i.e. the largest value
if you do this --
SELECT author, date FROM searches GROUP BY author
then the value of the date column that is returned for each author is indeterminate -- it could be any of the values for each author
since you want the latest one, you must do this --
SELECT author, MAX(date) FROM searches GROUP BY author
see the difference?
as for step 2, i don't think you understood what i was saying about joining to the subquery...
FROM users u
JOIN ( SELECT author
, MAX(date) AS latest
BY author ) AS s
ON s.author = u.uID
see how the subquery is used, in the FROM clause a subquery is called a derived table
play with that for a minute, and convince yourself it's working correctly, then we'll proceed to the update