sql >> Database >  >> RDS >> Mysql

MySQL Update Inner Join tabellen-query

Probeer dit:

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

Bijwerken:

Omdat je zei dat de query een syntaxisfout opleverde, heb ik een aantal tabellen gemaakt waarmee ik deze kon testen en heb ik bevestigd dat er geen syntaxisfout in mijn query zit:

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

Zie je wel? Geen syntaxisfout. Ik heb getest met MySQL 5.5.8.



  1. Verbeter de afstemming van SQL Server-prestaties met deze 3 tips

  2. Een trigger maken die alleen wordt uitgevoerd wanneer een nieuwe tabel wordt gemaakt

  3. Postgres UTC-datumnotatie &tijdperk gegoten, tekeninversie

  4. Verbinding maken met MySQL met behulp van Python