UPDATE nhiều cột trong một câu lệnh
Dùng SET cot1 = giaTri1, cot2 = giaTri2, ... phân cách bằng dấu phẩy.
Cú pháp
UPDATE tenBang
SET cot1 = 'giaTri1', cot2 = 'giaTri2'
WHERE dieu_kien;
Ví dụ minh họa
Bảng StudentInformations:
CREATE TABLE StudentInformations (
StudentId INT NOT NULL AUTO_INCREMENT,
StudentFirstName VARCHAR(20),
StudentLastName VARCHAR(20),
PRIMARY KEY (StudentId)
);
INSERT INTO StudentInformations (StudentFirstName, StudentLastName) VALUES
('John','Smith'), ('Carol','Taylor'), ('Mike','Jones'),
('Sam','Williams'), ('Bob','Davis'), ('David','Miller');
Cập nhật StudentId = 3:
UPDATE StudentInformations
SET StudentFirstName = 'Robert', StudentLastName = 'Brown'
WHERE StudentId = 3;
Kết quả
+-----------+------------------+-----------------+
| StudentId | StudentFirstName | StudentLastName |
+-----------+------------------+-----------------+
| 1 | John | Smith |
| 2 | Carol | Taylor |
| 3 | Robert | Brown | -- ĐÃ THAY ĐỔI
| 4 | Sam | Williams |
| 5 | Bob | Davis |
| 6 | David | Miller |
+-----------+------------------+-----------------+
Mở rộng
- Cập nhật nhiều hàng:
WHERE StudentId IN (3,4,5). - Cập nhật dựa trên giá trị cũ:
SET Price = Price * 1.1, UpdatedAt = NOW(). - Cập nhật từ bảng khác:
UPDATE a JOIN b ON ... SET a.cot = b.cot. RETURNING(MySQL 8.0.20+):UPDATE ... SET ... WHERE ... RETURNING StudentId, StudentFirstName.
Lưu ý an toàn
- Luôn có
WHERE(trừ khi muốn update toàn bảng). - Test với
SELECTtrước:SELECT * FROM bang WHERE dieu_kien. - Sử dụng transaction cho cập nhật quan trọng:
START TRANSACTION; UPDATE ...; COMMIT;.