Mysql: Table 'name' is specified twice, both as a target for 'UPDATE' and as a separate source for data
Inserito Gio,
Il problema in oggetto lo abbiamo se cerchiamo di fare una query di questo tipo:
update MYTABLE set COL=COL+1 where ID in (select ID from MYTABLE where OTHERCOL=0)In pratica stiamo cercando di fare una query di update (o di delete), selezionando le righe tramite una query di select sulla stessa tabella. La cosa potrebbe essere perfettamente lecita (almeno se la query di select non si basa su colonne modificate dalla query di update), ma MYSQL ce la blocca comunque.
E' possibile aggirare il controllo di mysql cammuffando la query di select con una ulteriore subquery:
update MYTABLE set COL=COL+1 where ID in (select * from (select ID from MYTABLE where OTHERCOL=0) _alias)
Commenti
mi ha risolto un grosso problema :)
Lascia un commento
Il tuo indirizzo email non sarà pubblicato. I commenti vengono pubblicati dopo la moderazione.