MySQL使用CASE WHEN/THEN/ELSE進行批次更新?


使用 CASE WHEN/ THEN/ ELSE 進行批次更新的語法如下 −

UPDATE yourTableName set yourColumnName=case when yourColumnName=Value1 then anyUpdatedValue1
when yourColumnName=Value2 then anyUpdatedValue2
when yourColumnName=Value3 then anyUpdatedValue3
when yourColumnName=Value4 then anyUpdatedValue4
else yourColumnName
end;

為了理解上述語法,我們首先建立一個表。建立表的查詢如下 −

mysql> create table CaseUpdateDemo
-> (
-> Id int,
-> Name varchar(100)
-> );
Query OK, 0 rows affected (0.78 sec)

使用 insert 命令向表中插入一些記錄。查詢如下 −

mysql> insert into CaseUpdateDemo values(1,'John');
Query OK, 1 row affected (0.17 sec)

mysql> insert into CaseUpdateDemo values(2,'Carol');
Query OK, 1 row affected (0.27 sec)

mysql> insert into CaseUpdateDemo values(3,'Mike');
Query OK, 1 row affected (0.11 sec)

mysql> insert into CaseUpdateDemo values(4,'Bob');
Query OK, 1 row affected (0.15 sec)

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

mysql> select *from CaseUpdateDemo;

輸出

+------+-------+
| Id   | Name  |
+------+-------+
| 1    | John  |
| 2    | Carol |
| 3    | Mike  |
| 4    | Bob   |
+------+-------+
4 rows in set (0.00 sec)

現在,您可以編寫我們上面討論的查詢以使用 Case WHEN THEN ELSE 更新列 id。查詢如下 −

mysql> update CaseUpdateDemo set Id=case when Id=1 then 1001
-> when Id=2 then 1002
-> when Id=3 then 1003
-> when Id=4 then 1004
-> else Id
-> end;
Query OK, 4 rows affected (0.15 sec)
Rows matched: 4 Changed: 4 Warnings: 0

現在,您可以使用 select 語句檢查 ID 列是否已更新。查詢如下 −

mysql> select *from CaseUpdateDemo;

輸出

+------+-------+
| Id   | Name  |
+------+-------+
| 1001 | John  |
| 1002 | Carol |
| 1003 | Mike  |
| 1004 | Bob   |
+------+-------+
4 rows in set (0.00 sec)

更新於:25-6-2020

8K+ 瀏覽

開啟你的職業生涯

完成課程即可獲得認證

開始學習
廣告