Maison > base de données > tutoriel mysql > Comment mettre à jour correctement les données MySQL à l'aide d'INNER JOIN ?

Comment mettre à jour correctement les données MySQL à l'aide d'INNER JOIN ?

Barbara Streisand
Libérer: 2024-12-08 00:34:11
original
758 Les gens l'ont consulté

How to Correctly Update MySQL Data Using INNER JOIN?

Requête MySQL utilisant une jointure interne pour les mises à jour

Un utilisateur a récemment rencontré une erreur en tentant d'exécuter une instruction UPDATE à l'aide d'une INNER JOIN dans MySQL 5.0. L'erreur s'est produite malgré l'utilisation de noms de champs corrects.

La requête d'origine est la suivante :

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
Copier après la connexion

Le problème réside dans la syntaxe de la requête. Pour le résoudre, les tables doivent être explicitement nommées dans l'instruction UPDATE. La requête corrigée est :

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
Copier après la connexion

L'utilisateur a également rencontré une erreur de syntaxe. Pour confirmer que la requête corrigée ne contient pas d'erreurs de syntaxe, les tables suivantes ont été créées à des fins de test :

CREATE TABLE business (business_id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT, mapx VARCHAR(255), mapy VARCHAR(255)) ENGINE=INNODB;

CREATE TABLE business_geocode (business_geocode_id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT, business_id INT UNSIGNED NOT NULL, latitude VARCHAR(255) NOT NULL, longitude VARCHAR(255) NOT NULL, FOREIGN KEY (business_id) REFERENCES business(business_id)) ENGINE=INNODB;
Copier après la connexion

Lors de l'exécution de la requête corrigée sur ces tables à l'aide de MySQL 5.5.8, aucune erreur de syntaxe ne s'est produite. Le résultat de la requête montre qu'aucune ligne n'a été trouvée ou modifiée.

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