MySQL hỗ trợ JOIN trực tiếp trong câu lệnh UPDATE để đồng bộ dữ liệu giữa 2 bảng.
Ví dụ minh họa
Bảng 1:
mysql> CREATE TABLE DemoTable1 (Id INT, Name VARCHAR(10)); mysql> INSERT INTO DemoTable1 VALUES(100, 'Bob');
Bảng 2:
mysql> CREATE TABLE DemoTable2 (Id INT, FirstName VARCHAR(10)); mysql> INSERT INTO DemoTable2 VALUES(100, 'Adam');
Cập nhật Name trong bảng 1 = FirstName bảng 2 theo Id khớp:
mysql> UPDATE DemoTable1
JOIN DemoTable2 ON DemoTable1.Id = DemoTable2.Id
SET DemoTable1.Name = DemoTable2.FirstName;
Kết quả bảng 1 (Bob → Adam):
mysql> SELECT * FROM DemoTable1;
+------+------+ | Id | Name | +------+------+ | 100 | Adam | +------+------+
Cú pháp đầy đủ:
UPDATE bang1 [INNER | LEFT] JOIN bang2 ON bang1.cot = bang2.cot SET bang1.cot_muc_tieu = bang2.cot_nguon [WHERE dieu_kien];
Lưu ý:
INNER JOIN: chỉ cập nhật hàng khớp cả 2 bảng.LEFT JOIN: cập nhật tất cả bảng 1, hàng không khớp sẽ set NULL (nếu không có WHERE).- Có thể cập nhật nhiều cột:
SET t1.a = t2.a, t1.b = t2.b. - Alias bảng giúp ngắn gọn:
UPDATE t1 JOIN t2 ON t1.id = t2.id SET t1.name = t2.name.