Maison >base de données >tutoriel mysql >Comment corriger une erreur de sous-requête dans une requête de mise à jour MySQL ?

Comment corriger une erreur de sous-requête dans une requête de mise à jour MySQL ?

Patricia Arquette
Patricia Arquetteoriginal
2024-10-27 05:35:02365parcourir

How to Fix a Subquery Error in a MySQL Update Query?

Erreur de sous-requête MySQL dans la requête de mise à jour

La requête fournie est confrontée à une erreur en raison d'une syntaxe incorrecte dans la relation entre la sous-requête et l'instruction de mise à jour externe. Le problème se pose car la clause WHERE de la mise à jour externe est appliquée avant l'exécution de la sous-requête interne.

Pour résoudre ce problème, nous avons besoin d'une approche de mise à jour multi-table illustrée ci-dessous :

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

Dans cette requête ajustée :

  • Nous incluons un INNER JOIN entre la table Competition (alias "C") et une sous-requête (comme "A") qui renvoie les décomptes souhaités.
  • La condition dans la clause ON relie C.CompetitionID à A.CompetitionID, garantissant la bonne association entre les lignes.
  • La clause SET met à jour la colonne NumberOfTeams dans la table Competition avec les résultats de la sous-requête.

Cette requête révisée met effectivement à jour la table Compétition avec le nombre d'équipes correct, résolvant ainsi l'erreur de syntaxe précédente.

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:
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