Vấn đề: UPDATE nhiều cột trong một truy vấn
Cần thay đổi cả FirstName và LastName cho hàng có Id = 103.
Giải pháp: SET cột1 = giá trị1, cột2 = giá trị2
Chỉ dùng một từ khóa SET, các cặp cột/giá trị cách nhau bằng dấu phẩy.
1. Tạo bảng và dữ liệu
CREATE TABLE DemoTable (
Id INT NOT NULL,
FirstName VARCHAR(20),
LastName VARCHAR(20)
);
INSERT INTO DemoTable VALUES
(101, 'John', 'Smith'),
(102, 'John', 'Doe'),
(103, 'Adam', 'Smith'),
(104, 'David', 'Miller');
2. Cập nhật Id = 103
UPDATE DemoTable
SET FirstName = 'Carol', LastName = 'Taylor'
WHERE Id = 103;
3. Kết quả
+-----+-----------+----------+
| Id | FirstName | LastName |
+-----+-----------+----------+
| 101 | John | Smith |
| 102 | John | Doe |
| 103 | Carol | Taylor |
| 104 | David | Miller |
+-----+-----------+----------+
Mở rộng
- Cập nhật nhiều hàng:
WHERE Id IN (101, 102)hoặc điều kiện khác. - Cập nhật dựa trên giá trị cũ:
SET Age = Age + 1, LastLogin = NOW(). - Cập nhật từ bảng khác:
UPDATE t1 JOIN t2 ON ... SET t1.col = t2.col.
Lưu ý
- Luôn có
WHEREtrừ khi thực sự muốn cập nhật toàn bảng. - Kiểm tra bằng
SELECTcùng điều kiệnWHEREtrước khi chạyUPDATE. - Sử dụng transaction cho các cập nhật quan trọng.