SQL語句練習(xí)三
題目描述
給定一個(gè) salary 表,如下所示,有 m = 男性 和 f = 女性 的值。交換所有的 f 和 m 值(例如,將所有 f 值更改為 m,反之亦然)。要求只使用一個(gè)更新(Update)語句,并且沒有中間的臨時(shí)表。
注意,您必只能寫一個(gè) Update 語句,請不要編寫任何 Select 語句。
例如:
| id | name | sex | salary |
|----|------|-----|--------|
| 1 | A | m | 2500 |
| 2 | B | f | 1500 |
| 3 | C | m | 5500 |
| 4 | D | f | 500 |
運(yùn)行你所編寫的更新語句之后,將會(huì)得到以下表:
| id | name | sex | salary |
|----|------|-----|--------|
| 1 | A | f | 2500 |
| 2 | B | m | 1500 |
| 3 | C | f | 5500 |
| 4 | D | m | 500 |
解題思路
此題是一個(gè)考察 sql 語句的試題,特別需要注意的是題目要求,不能是用 select、臨時(shí)表、多條 sql 語句等情況。這就考察對(duì) sql 語句的靈活運(yùn)用。
解題方法
1.解題方式一:使用 case when 語法
// case when 語法
update tableName set colnum = caseVal
WHEN 情況一 THEN 返回值一
WHEN 情況二 THEN 返回值二
ELSE 返回值
END
此方法比較推薦使用在多種條件,每種條件的修改值且不同時(shí)。
update salary set sex = case sex
when 'm' then 'f'
when 'f' then 'm'
else 'noknow'
end
2.解題方式二:使用 if 表達(dá)式 if (expre, true, false)
update salary set sex = if (sex = 'm', 'f', 'm')
3.解題方式三:使用 replace(str, search_str_content, replace_value)
update salary set sex = replace('mf', sex, '') where sex != '';
評(píng)論
圖片
表情
