Bạn phải sử dụng một bảng tạm thời, vì bạn không thể cập nhật một cái gì đó mà bạn sử dụng để chọn. Một ví dụ đơn giản:
Điều này sẽ không hoạt động:
UPDATE mytable p1 SET p1.type= 'OFFER' WHERE p1.parent IN
(SELECT p2.id from mytable p2 WHERE p2.actu_id IS NOT NULL);
Điều này sẽ thực hiện công việc:
UPDATE mytable p1 SET p1.type= 'OFFER' WHERE p1.parent IN
(SELECT p2.id from (SELECT * FROM mytable) p2 WHERE p2.actu_id IS NOT NULL);
"from (SELECT * FROM mytable) p2" sẽ tạo bản sao tạm thời cho bảng của bạn, bảng này sẽ không bị ảnh hưởng bởi các bản cập nhật của bạn