Maison > base de données > tutoriel mysql > Pourquoi MySQL génère-t-il l'erreur « Table spécifiée deux fois » lors de la mise à jour d'une table à l'aide d'une sous-requête ?

Pourquoi MySQL génère-t-il l'erreur « Table spécifiée deux fois » lors de la mise à jour d'une table à l'aide d'une sous-requête ?

Susan Sarandon
Libérer: 2024-11-15 02:40:02
original
554 Les gens l'ont consulté

Why Does MySQL Throw

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'
  )
);
Copier après la connexion

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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal