एक छोटी सी चाल के साथ मेरा समाधान:पहला:आपको एक उप-चयन का उपयोग करना चाहिए ताकि अद्यतन अब एक ही तालिका में दूसरा न हो:आपको @id को "(SELECT @id:=0)" के साथ प्रारंभ करना होगा यदि कोई पंक्ति नहीं मिली तो वे वापस आते हैं अंतिम सेट मान। यहां आप यह भी निर्दिष्ट कर सकते हैं कि क्या कोई परिणाम नहीं मिलने पर वे 0 या '' लौटाते हैं।
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
);