如何使用單個查詢批次更新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)
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP