You can't specify target table for update in FROM clause
Le message "You can't specify target table 'nomtable' for update in FROM clause" peut s'afficher lorsqu'une requête de mise à jour fait appel à une sous-requête contenant le nom de la table à mettre à jour :
UPDATE table1 SET champ=valeur WHERE id IN (SELECT table2.id FROM table1, table2...)
Il est possible de contourner cette erreur en passant par une table temporaire , mais il existe une astuce en imbriquant les sous-requêtes (de sorte que MySQL crée lui-même la table temporaire) :
UPDATE table1 SET champ=valeur WHERE id IN (SELECT id FROM( SELECT table2.id FROM table1, table2...) AS temp )
ou encore :
UPDATE table1 T1, (SELECT table2.id FROM table1, table2...) TEMP SET T1.champ = valeur WHERE T1.id = TEMP.id