Erreur UPDATE Can't specify target in FROM clause
RésoluExileur Messages postés 1621 Date d'inscription Statut Membre Dernière intervention -
J'ai cette erreur qui s'affiche mais je ne comprend pas pourquoi...
Après des recherches le problème viendrait du faite que je ne peux pas effectuer un UPDATE avec une sous-requête SELECT travaillant sur la même table.
Donc si c'est celà, je ne sais pas comment là corriger.
#1093 - You can't specify target table 'employees' for update in FROM clause
UPDATE employees
SET emp_superior_id = (SELECT emp_id
FROM employees
JOIN posts ON pos_id = emp_pos_id
JOIN shops ON sho_id = emp_sho_id
WHERE pos_libelle LIKE 'Manager%' AND sho_city = 'Arras'
HAVING MIN(emp_salary))
WHERE emp_id = (SELECT * FROM (SELECT emp_id
FROM employees
JOIN posts ON pos_id = emp_pos_id
JOIN shops ON sho_id = emp_sho_id
WHERE pos_libelle = 'Pépiniériste' AND sho_city = 'Arras') emsup)
5 réponses
L'erreur MySQL #1093 You can't specify target table 'employees' for update in FROM clause survient lorsque l'UPDATE utilise une sous-requête sur la même table active.
Plusieurs réponses expliquent que l'erreur apparaît lorsque l'UPDATE s'appuie sur une sous-requête référant la même table et proposent d'utiliser une jointure JOIN à la place, ou de scinder l'opération en deux requêtes.
En pratique, l'approche conseillée consiste à récupérer l'emp_id du nouveau manager d'Arras via une requête distincte et à mettre à jour emp_superior_id des pépiniéristes concernés sans relier directement les sous-requêtes.
Des exemples concrets montrent aussi que certaines tentatives fonctionnent lorsque l'on met à jour directement emp_superior_id avec des emp_id explicites, contournant les sous-requêtes imbriquées et simplifiant le processus.
-
yg_be Messages postés 23437 Date d'inscription Statut Contributeur Dernière intervention Ambassadeur 1 588
bonjour,
ce serait probablement plus clair si tu expliquais ce que tu essayais de réaliser.