Rozwiązaniem jest zagnieżdżenie ORDER BY i LIMIT w klauzuli FROM jako części sprzężenia. To pozwoli Ci najpierw znaleźć dokładny wiersz do zaktualizowania (ta.id), a następnie zatwierdzić aktualizację.
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';
Cynk kapelusza dla barona Schwartza, znanego również jako Xaprb, za doskonały post na ten temat:http://www.xaprb.com/blog/2006/08/10/jak-uzyc- zamówienie-według-limitu-aktualizacji-wielu-tabel-w-mysql/