Erreur MySQL : table spécifiée deux fois dans UPDATE et Source
Lors de la tentative de mise à jour de la table du gestionnaire à l'aide de la requête SQL fournie, MySQL rencontre un erreur : "La table 'm1' est spécifiée deux fois, à la fois comme cible pour 'UPDATE' et comme source distincte de données." Cette erreur se produit car le gestionnaire de tables est référencé deux fois dans la sous-requête.
Le problème peut être résolu en modifiant la sous-requête pour effectuer une sélection à partir d'une table dérivée. Au lieu d'utiliser directement l'alias m2, la requête doit créer une table temporaire à l'aide de l'instruction SELECT, puis effectuer une sélection dans cette table temporaire. La requête modifiée ci-dessous permet d'atteindre cet objectif :
UPDATE manager SET status = 'Y' WHERE branch_id IN ( SELECT branch_id FROM (SELECT * FROM manager) AS m2 WHERE (branch_id, year) IN ( SELECT branch_id, year FROM branch_master WHERE type = 'finance' ) );
En utilisant une table dérivée, MySQL peut correctement différencier la table gestionnaire utilisée dans l'instruction UPDATE et la table gestionnaire référencée dans la sous-requête. Cela élimine la confusion qui a conduit au message d'erreur.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!