Mijn oplossing met een klein trucje:eerst:je moet een subselect gebruiken zodat UPDATE niet nu dezelfde tabel is en een tweede:je moet de @id initialiseren met "(SELECT @id:=0)" anders als ze geen rij hebben gevonden, retourneren ze de laatst ingestelde waarde. Hier kunt u ook aangeven of ze 0 of '' retourneren als er geen resultaat wordt gevonden.
UPDATE jobs SET lease=NOW() WHERE id =
( SELECT * FROM
( SELECT @id:=id FROM jobs,(SELECT @id:=0) AS tmp_id
WHERE TIMESTAMPDIFF(HOUR,lease,NOW())>=8
AND NOT complete ORDER BY priority LIMIT 1
) AS tmp
);