Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Truy vấn bảng kết hợp bên trong cập nhật MySQL

Hãy thử điều này:

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

Cập nhật:

Vì bạn nói rằng truy vấn dẫn đến lỗi cú pháp, tôi đã tạo một số bảng mà tôi có thể kiểm tra nó và xác nhận rằng không có lỗi cú pháp nào trong truy vấn của tôi:

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

Xem? Không có lỗi cú pháp. Tôi đã thử nghiệm với MySQL 5.5.8.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Lỗi MySql:Trường 1364 'display_name' không có giá trị mặc định

  2. Cách tìm và thay thế văn bản trong bảng mysql

  3. Cách xác minh bản sao lưu MySQL của bạn với ClusterControl

  4. Tạo một chuỗi ngày

  5. SQL:Lặp lại một hàng kết quả nhiều lần và đánh số các hàng