如何使用單個查詢批次更新MySQL資料?


您可以使用CASE語句在一個查詢中批次更新MySQL資料。語法如下:

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

為了理解上述概念,讓我們建立一個表。建立表的查詢如下:

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

使用insert命令在表中插入一些記錄。插入記錄的查詢如下:

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)

使用select語句顯示錶中的所有記錄。查詢如下:

mysql> select *from UpdateAllDemo;

輸出如下:

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

現在,我們將進行批次更新,即更新

  • 值“Introduction to C”為“C in Depth”,以及

  • 值“Introduction to Java”為“Java in Depth”。

您可以像上面顯示的那樣使用CASE語句來實現此操作。查詢如下:

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)

現在您可以使用select語句檢查表中的值是否已更新。

檢查表中已更新值的查詢如下:

mysql> select *from UpdateAllDemo;

以下是顯示批次更新成功的輸出:

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

更新於:2019年7月30日

6K+ 瀏覽量

啟動您的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.