Solusi saya dengan sedikit trik:pertama:Anda harus menggunakan subselect sehingga UPDATE bukan sekarang tabel yang sama kedua:Anda harus menginisialisasi @id dengan "(SELECT @id:=0)" jika tidak ditemukan baris yang mereka kembalikan nilai yang ditetapkan terakhir. Di sini Anda juga dapat menentukan apakah mereka mengembalikan 0 atau '' ketika tidak ada hasil yang ditemukan.
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
);