選択に使用するものを更新できないため、一時テーブルを使用する必要があります。簡単な例:
これは機能しません:
UPDATE mytable p1 SET p1.type= 'OFFER' WHERE p1.parent IN
(SELECT p2.id from mytable p2 WHERE p2.actu_id IS NOT NULL);
これでうまくいきます:
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」は、テーブルの一時的な複製を作成しますが、更新の影響を受けません