Computer >> Máy Tính >  >> Lập trình >> MySQL

Làm thế nào để cập nhật hàng loạt dữ liệu MySQL với một truy vấn duy nhất?

Bạn có thể cập nhật hàng loạt dữ liệu MySQL bằng một truy vấn bằng lệnh CASE. Cú pháp như sau -

update yourTableName
set yourUpdateColumnName = ( Case yourConditionColumnName WHEN Value1 THEN ‘’UpdatedValue’
WHEN Value2 THEN ‘UpdatedValue’
.
.
N
END)
where yourConditionColumnName IN(Value1,Value2,.....N);

Để hiểu khái niệm trên, chúng ta hãy tạo một bảng. Truy vấn để tạo bảng như sau -

mysql> create table UpdateAllDemo
   −> (
   −> BookId int,
   −> BookName varchar(200)
   −> );
Query OK, 0 rows affected (1.18 sec)

Chèn một số bản ghi trong bảng bằng lệnh chèn. Truy vấn để chèn bản ghi như sau -

mysql> insert into UpdateAllDemo values(1000,'Introduction to C');
Query OK, 1 row affected (0.15 sec)
mysql> insert into UpdateAllDemo values(1001,'Introduction to Java');
Query OK, 1 row affected (0.21 sec)

Hiển thị tất cả các bản ghi từ bảng bằng cách sử dụng câu lệnh select. Truy vấn như sau -

mysql> select *from UpdateAllDemo;

Sau đây là kết quả -

+--------+----------------------+
| BookId | BookName             |
+--------+----------------------+
| 1000   | Introduction to C    |
| 1001   | Introduction to Java |
+--------+----------------------+
2 rows in set (0.00 sec)

Bây giờ, chúng tôi sẽ cập nhật hàng loạt, tức là cập nhật

  • Giá trị "Giới thiệu về C" với giá trị "Độ sâu của C" và

  • Giá trị "Giới thiệu về Java" với giá trị "Java in sâu".

Bạn có thể sử dụng lệnh CASE cho việc này như được hiển thị ở trên. Truy vấn như sau -

mysql> update UpdateAllDemo
   −> set BookName = (CASE BookId WHEN 1000 THEN 'C in Depth'
   −> when 1001 THEN 'Java in Depth'
   −> END)
   −> Where BookId IN(1000,1001);
Query OK, 2 rows affected (0.24 sec)

Bây giờ, bạn có thể kiểm tra các giá trị được cập nhật trong bảng hay không bằng cách sử dụng câu lệnh select.

Truy vấn để kiểm tra giá trị cập nhật trong bảng như sau -

mysql> select *from UpdateAllDemo;

Sau đây là kết quả hiển thị cập nhật hàng loạt thành công -

+--------+---------------+
| BookId | BookName      |
+--------+---------------+
| 1000   | C in Depth    |
| 1001   | Java in Depth |
+--------+---------------+
2 rows in set (0.00 sec)