Giải pháp của tôi với một mẹo nhỏ:đầu tiên:bạn phải sử dụng một lựa chọn phụ để UPDATE không phải bây giờ là cùng một bảng trước giây:bạn phải khởi tạo @id bằng "(SELECT @id:=0)" khác nếu không tìm thấy hàng nào mà chúng trả về giá trị đặt cuối cùng. Tại đây bạn cũng có thể chỉ định xem chúng trả về 0 hay '' khi không tìm thấy kết quả nào.
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
);