Løsningen er at indlejre ORDER BY og LIMIT i en FROM-klausul som en del af en join. Dette lader dig finde den nøjagtige række, der skal opdateres (ta.id), først, og derefter foretage opdateringen.
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';
Hattip til Baron Schwartz, a.k.a. Xaprb, for det fremragende indlæg om netop dette emne:http://www.xaprb.com/blog/2006/08/10/how-to-use- ordre-efter-og-grænse-på-multi-table-opdateringer-i-mysql/