La solución es anidar ORDER BY y LIMIT en una cláusula FROM como parte de una unión. Esto le permite encontrar primero la fila exacta que se actualizará (ta.id), luego confirmar la actualización.
UPDATE tableA AS target
INNER JOIN (
SELECT ta.id
FROM tableA AS ta
INNER JOIN tableB AS tb ON tb.id = ta.user_id
WHERE tb.username = '$varName'
ORDER BY ta.datetime DESC
LIMIT 1) AS source ON source.id = target.id
SET col1 = '$var';
Felicitaciones a Baron Schwartz, también conocido como Xaprb, por la excelente publicación sobre este tema exacto:http://www.xaprb.com/blog/2006/08/10/how-to-use- order-by-and-limit-on-multi-table-updates-in-mysql/