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

Cập nhật nhiều bản ghi trong một truy vấn MySQL

UPDATE nhiều cột cùng lúc cho một bản ghi trong MySQL

Câu lệnh UPDATE có thể gán giá trị cho nhiều cột trong một câu lệnh, lọc bằng WHERE.

Tạo bảng và dữ liệu

mysql> create table DemoTable ( 
    Id int NOT NULL AUTO_INCREMENT PRIMARY KEY, 
    Marks1 int, Marks2 int, Marks3 int 
); 
Query OK, 0 rows affected (0.60 sec)
mysql> insert into DemoTable(Marks1,Marks2,Marks3) values(45,67,34); 
mysql> insert into DemoTable(Marks1,Marks2,Marks3) values(89,87,56); 
mysql> insert into DemoTable(Marks1,Marks2,Marks3) values(87,56,54);

Dữ liệu ban đầu

+----+--------+--------+--------+ 
| Id | Marks1 | Marks2 | Marks3 | 
+----+--------+--------+--------+ 
| 1  | 45     | 67     | 34     | 
| 2  | 89     | 87     | 56     | 
| 3  | 87     | 56     | 54     | 
+----+--------+--------+--------+

Cập nhật 3 cột cho Id=1

mysql> update DemoTable 
    -> set Marks1=98, Marks2=96, Marks3=99 
    -> where Id=1; 
Query OK, 1 row affected (0.18 sec) 
Rows matched: 1  Changed: 1  Warnings: 0

Kết quả

+----+--------+--------+--------+ 
| Id | Marks1 | Marks2 | Marks3 | 
+----+--------+--------+--------+ 
| 1  | 98     | 96     | 99     | 
| 2  | 89     | 87     | 56     | 
| 3  | 87     | 56     | 54     | 
+----+--------+--------+--------+

Tiêu đề gốc "Update multiple records" (nhiều bản ghi) nhưng ví dụ chỉ update 1 bản ghi.

Để update NHIỀU BẢN GHI khác nhau giá trị: MySQL không hỗ trợ UPDATE nhiều hàng với giá trị khác nhau trong 1 câu lệnh đơn giản. Cần dùng:

  • Nhiều câu UPDATE riêng biệt
  • CASE trong SET: UPDATE ... SET Marks1 = CASE Id WHEN 1 THEN 98 WHEN 2 THEN 95 END ...
  • Bảng tạm / derived table JOIN
  • Stored Procedure lặp

Ví dụ CASE UPDATE nhiều hàng:

UPDATE DemoTable 
SET Marks1 = CASE Id WHEN 1 THEN 98 WHEN 2 THEN 95 WHEN 3 THEN 90 END,
    Marks2 = CASE Id WHEN 1 THEN 96 WHEN 2 THEN 94 WHEN 3 THEN 92 END
WHERE Id IN (1,2,3);