Min lösning med ett litet trick:först:du måste använda ett underval så att UPPDATERING inte nu är samma tabell andra sekund:du måste initiera @id:et med "(SELECT @id:=0)" annars om den inte hittade raden returnerar det senaste inställda värdet. Här kan du också ange om de returnerar 0 eller '' när inget resultat hittas.
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
);