Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Cập nhật cột dựa trên cột của bảng khác trong MySQL (JOIN trong UPDATE)

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.