Moje řešení s malým trikem:za prvé:musíte použít podvýběr, aby UPDATE ne teď to je stejná tabulka a za sekundu:musíte inicializovat @id pomocí "(SELECT @id:=0)", jinak pokud nenalezený žádný řádek vrátí poslední nastavenou hodnotu. Zde můžete také určit, zda vrátí 0 nebo '', když není nalezen žádný výsledek.
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
);