天天看點

case when 作為條件_圖解面試題:如何按條件修改資料?

case when 作為條件_圖解面試題:如何按條件修改資料?

​【題目】

下圖表名是“班級表”,請将班級中所有的1班、2班交換,0班變為3班。要求隻使用更新語句(update),不要使用select語句。

case when 作為條件_圖解面試題:如何按條件修改資料?

【解題思路】

1. 題目要求按條件更換列中的内容,“條件”我們想到的是sql裡的case表達式。

2. case...when...的使用方法在《從零學會SQL:多表查詢》裡有講過:

case when 作為條件_圖解面試題:如何按條件修改資料?

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);
           

查詢更新完的班級表:已經更新成功。

case when 作為條件_圖解面試題:如何按條件修改資料?

【本題考點】

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的語句。

case when 作為條件_圖解面試題:如何按條件修改資料?

參考答案:

update salaryset sex = (case sex when 'm' then 'f' else 'm' end);
           

運作結果:

case when 作為條件_圖解面試題:如何按條件修改資料?

推薦:如何從零學會SQL?

case when 作為條件_圖解面試題:如何按條件修改資料?

繼續閱讀