Erreur UPDATE Can't specify target in FROM clause

Résolu
rdbn Messages postés 96 Statut Membre -  
Exileur Messages postés 1621 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
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) 


Configuration: Windows / Chrome 90.0.4430.93

5 réponses

Résumé de la discussion

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.

Généré automatiquement par IA
sur la base des meilleures réponses
  1. 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.
    0