Maison > base de données > tutoriel mysql > Pourquoi est-ce que j'obtiens l'erreur « La table est spécifiée deux fois » dans les requêtes MySQL UPDATE ?

Pourquoi est-ce que j'obtiens l'erreur « La table est spécifiée deux fois » dans les requêtes MySQL UPDATE ?

Mary-Kate Olsen
Libérer: 2024-11-23 08:03:32
original
673 Les gens l'ont consulté

Why Do I Get

Erreur : "La table est spécifiée deux fois, à la fois comme cible pour 'UPDATE' et comme source distincte de données"

Lors de l'exécution de requêtes MySQL impliquant la mise à jour d'un et en la référençant comme source de données dans la même requête, vous pouvez rencontrer l'erreur « La table est spécifiée deux fois ». Cette erreur se produit lorsque la même table est à la fois la cible de l'instruction UPDATE et apparaît comme une table distincte dans la sous-requête utilisée pour déterminer les critères de mise à jour.

Pour résoudre cette erreur et mettre à jour avec succès la table souhaitée, suivez ces étapes :

  1. Extraire la sous-requête : Identifiez la sous-requête dans l'instruction UPDATE à l'origine du problème. Dans l'exemple fourni, la sous-requête est :
SELECT m2.branch_id FROM manager AS m2 WHERE (m2.branch_id, m2.year) IN (...)
Copier après la connexion
  1. Créer une table dérivée : Créez une table dérivée en encapsulant la sous-requête dans une autre instruction SELECT et en attribuant une alias pour cela. Cela vous permettra de référencer la sous-requête sans spécifier explicitement deux fois la table du gestionnaire.
SELECT * FROM (SELECT m2.branch_id FROM manager AS m2 WHERE (m2.branch_id, m2.year) IN (...)) AS subquery
Copier après la connexion
  1. Utilisez la table dérivée : Remplacez la sous-requête d'origine par la table dérivée dans l'instruction UPDATE.
UPDATE manager
SET status = 'Y'
WHERE branch_id IN (
    SELECT branch_id
    FROM subquery
);
Copier après la connexion

En utilisant une table dérivée, vous évitez de spécifier la table du gestionnaire à la fois comme cible et la source de données, résolvant l'erreur « La table est spécifiée deux fois ». Cette technique garantit que la sous-requête n'est référencée qu'une seule fois et permet à l'instruction UPDATE de s'exécuter avec succès.

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