Maison >base de données >tutoriel mysql >Pourquoi ma requête MySQL UPDATE JOIN génère-t-elle une erreur de compilation ?

Pourquoi ma requête MySQL UPDATE JOIN génère-t-elle une erreur de compilation ?

DDD
DDDoriginal
2024-12-07 09:29:16778parcourir

Why Does My MySQL UPDATE JOIN Query Produce a Compile Error?

Problème MySQL avec la requête de mise à jour des tables de jointure

Lors d'une tentative de mise à jour des tables à l'aide d'une requête de jointure MySQL, un utilisateur a rencontré une erreur de compilation. Voici la requête qu'ils ont utilisée :

UPDATE  b
SET b.mapx = g.latitude,
    b.mapy = g.longitude
FROM business AS b
INNER JOIN business_geocode g ON b.business_id = g.business_id
WHERE (b.mapx = '' OR b.mapx = 0) AND
      g.latitude > 0

Malgré l'exactitude des noms de champs, la requête n'a pas pu être compilée.

Solution :

Sur en analysant la requête, il a été constaté que l'erreur pouvait être résolue en plaçant les alias de table avant les noms de colonnes, comme indiqué ci-dessous :

UPDATE business AS b
INNER JOIN business_geocode AS g ON b.business_id = g.business_id
SET b.mapx = g.latitude,
  b.mapy = g.longitude
WHERE  (b.mapx = '' or b.mapx = 0) and
  g.latitude > 0

Mise à jour :

Après que l'utilisateur a confirmé que la requête entraînait toujours une erreur de syntaxe, des tables de test ont été créées pour vérifier la syntaxe. La requête modifiée a été testée sur MySQL 5.5.8 et n'a produit aucune erreur de syntaxe, comme indiqué ci-dessous :

mysql> UPDATE business AS b
    -> INNER JOIN business_geocode AS g ON b.business_id = g.business_id
    -> SET b.mapx = g.latitude,
    ->   b.mapy = g.longitude
    -> WHERE  (b.mapx = '' or b.mapx = 0) and
    ->   g.latitude > 0;
Query OK, 0 rows affected (0.00 sec)
Rows matched: 0  Changed: 0  Warnings: 0

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