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