web-dev-qa-db-fra.com

MYSQL Update Statement Tables de jointure internes

Je n'ai aucune idée de quel est le problème. En utilisant MySQL 5.0, j'obtiens une erreur de compilation lorsque j'essaie d'exécuter l'instruction de mise à jour MYSQL 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

tous les noms de champs sont corrects. Des pensées?

183

Essaye ça:

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:

Puisque vous avez dit que la requête avait généré une erreur de syntaxe, j'ai créé des tables sur lesquelles je pouvais la tester et j'ai confirmé qu'il n'y avait pas d'erreur de syntaxe dans ma requête:

mysql> create table business (business_id int unsigned primary key auto_increment, mapx varchar(255), mapy varchar(255)) engine=innodb;
Query OK, 0 rows affected (0.01 sec)

mysql> 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;
Query OK, 0 rows affected (0.01 sec)

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

Voir? Aucune erreur de syntaxe. J'ai testé contre MySQL 5.5.8.

404
Asaph

La clause SET devrait venir après la spécification de la table.

UPDATE business AS b
INNER JOIN business_geocode 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
14
mathiasfk