Maison >base de données >tutoriel mysql >Comment réparer une requête MySQL UPDATE avec une erreur de sous-requête : problèmes de référence d'alias ?
Correction d'une erreur dans la requête MySQL UPDATE avec sous-requête
La requête fournie implique la mise à jour du champ NumberOfTeams dans la table Competition à l'aide d'une sous-requête. Cependant, l'utilisateur rencontre une erreur due à un problème de syntaxe.
Le problème réside dans l'utilisation incorrecte d'un alias (a) dans la clause WHERE de l'instruction UPDATE. Dans MySQL, les alias ne sont valides que dans le cadre de la sous-requête elle-même. Par conséquent, faire référence à l'alias a dans la clause WHERE n'est pas valide.
Solution utilisant la mise à jour multi-tables
Pour corriger ce problème, une mise à jour multi-tables peut être utilisée . Cela implique de joindre la table Compétition avec une sous-requête qui calcule le nombre d'équipes pour chaque compétition. La jointure est effectuée à l'aide de la colonne CompetitionID, et les valeurs mises à jour sont ensuite définies en fonction de la sous-requête jointe.
<code class="sql">UPDATE Competition AS C INNER JOIN ( SELECT CompetitionId, COUNT(*) AS NumberOfTeams FROM PicksPoints AS p WHERE UserCompetitionID IS NOT NULL GROUP BY CompetitionId ) AS A ON C.CompetitionID = A.CompetitionID SET C.NumberOfTeams = A.NumberOfTeams;</code>
La sous-requête calcule le nombre d'équipes pour chaque compétition, qui est ensuite utilisé pour mettre à jour le NumberOfTeams. colonne dans le tableau principal Compétition. Cette méthode garantit que les résultats de la sous-requête sont correctement référencés dans la logique de mise à jour.
Exemple et démonstration
Une démo de cette requête corrigée peut être consultée sur http:// www.sqlfiddle.com/#!2/a74f3/1. L'exécution de cette requête mettra à jour avec succès la table Compétition avec le nombre correct d'équipes pour chaque compétition.
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!