Musisz użyć tabeli tymczasowej, ponieważ nie możesz zaktualizować czegoś, czego używasz do wyboru. Prosty przykład:
To nie zadziała :
UPDATE mytable p1 SET p1.type= 'OFFER' WHERE p1.parent IN
(SELECT p2.id from mytable p2 WHERE p2.actu_id IS NOT NULL);
To wykona zadanie:
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” utworzy tymczasowy duplikat Twojej tabeli, na który Twoje aktualizacje nie będą miały wpływu