1.先創建測試表和數據

1 CREATE TABLE graduates ( 2 name varchar(255) , 3 income int4(255) 4 ); 5 6 INSERT INTO graduates VALUES ('桑普森', '400000'); 7 INSERT INTO graduates VALUES ('邁克', '30000'); 8 INSERT INTO graduates VALUES ('懷特', '20000'); 9 INSERT INTO graduates VALUES ('阿諾德', '20000'); 10 INSERT INTO graduates VALUES ('史密斯', '20000'); 11 INSERT INTO graduates VALUES ('勞倫斯', '15000'); 12 INSERT INTO graduates VALUES ('哈德遜', '15000'); 13 INSERT INTO graduates VALUES ('肯特', '10000'); 14 INSERT INTO graduates VALUES ('貝克', '10000'); 15 INSERT INTO graduates VALUES ('斯科特', '10000');
測試表很簡單,就是名字和工資的一個表格
2..如果我們想把 工資20000的工資減半,工資為15000的加500,工資為其他數目的不變,使用case when一條SQL就可以完成,而且速度還非常快。
UPDATE graduates SET income = CASE WHEN income = 20000 THEN income * 0.5 WHEN income = 15000 THEN income + 500 ELSE income END;
case開始,when 條件1 then 某值1,when 條件2 then 某值2,......else 某值n,end結束。
ELSE income,非常重要,如果不指定else的話,其他不符合條件的人工資會被置為null,如下圖。
轉載自:https://blog.csdn.net/nextaction/article/details/80453843