Tienes que usar una tabla temporal, porque no puedes actualizar algo que usas para seleccionar. Un ejemplo sencillo:
Esto no funcionará:
UPDATE mytable p1 SET p1.type= 'OFFER' WHERE p1.parent IN
(SELECT p2.id from mytable p2 WHERE p2.actu_id IS NOT NULL);
Esto hará el trabajo:
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" creará un duplicado temporal de su tabla, que no se verá afectado por sus actualizaciones