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
628 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!

source:php.cn
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