
【題目】
下圖表名是“班級表”,請将班級中所有的1班、2班交換,0班變為3班。要求隻使用更新語句(update),不要使用select語句。
【解題思路】
1. 題目要求按條件更換列中的内容,“條件”我們想到的是sql裡的case表達式。
2. case...when...的使用方法在《從零學會SQL:多表查詢》裡有講過:
3. 更新語句時需要用到update語句,update語句使用方法如下:
update 表名set 列名 = 修改後的值;
【解題步驟】
1.确定case...when...語句中的内容
第一個條件是1班換為2班,第二個條件是2班換為1班,最後剩下的0班全部變成3班,語句如下:
case 班級 when 1 then 2 #将1換為2 when 2 then 1 #将2換為1 else 3 #剩下值(0)換為3end
2. 因為本題要求不能使用select語句,而是直接使用update将表内資料更新。結合上面提到的update語句,本題的答案如下:
update 班級表set 班級 = (case 班級 when 1 then 2 when 2 then 1 else 3 end);
查詢更新完的班級表:已經更新成功。
【本題考點】
1)一般在做SQL面試題時,大部分都是使用select語句完成。但在工作中,也會經常遇到要更新資料的情況。本題考察對update語句的掌握。
2)考察如何将業務條件用case表達式寫出來。
【舉一反三】
1. 在遇到需要将表内某列特定值替換成其他值時,記住case表達式如何使用。
2. 本題如果隻是要求查詢的話,使用select語句即可:
select (上面的case表達式) from 表名
3. 需要直接更新表中的資料的情況,熟記update語句。但要注意,在使用update更新表資料前,最好先将原表備份。
4. “按條件修改表資料”的應用例題
如下圖所示的salary表,有m = 男性和f = 女性的值。交換所有的f和m的值(将所有f更改為m,m改為f)。要求隻使用update的語句。
參考答案:
update salaryset sex = (case sex when 'm' then 'f' else 'm' end);
運作結果:
推薦:如何從零學會SQL?