1、题目
给定一个 salary 表,如下所示,有 m = 男性 和 f = 女性 的值。交换所有的 f 和 m 值(例如,将所有 f 值更改为 m,反之亦然)。要求只使用一个更新(Update)语句,并且没有中间的临时表。
注意,您必只能写一个 Update 语句,请不要编写任何 Select 语句。
题目.png
2、解题方法
- 使用case表达式
- 使用if表达式
3、case表达式
case表达式.png
update salary
set sex = (case sex
when 'm' then 'f'
else 'm'
end);
4、if表达式
除了使用case表达式,还可以使用if表达式来解题。
IF(expr1,expr2,expr3)
如果 expr1 是true,则 IF()的返回值为expr2; 否则返回值则为 expr3。
update salary
set sex = if (sex='m','f','m')
5、举一反三
- 在遇到需要将表内某列特定值替换成其他值时,记住case表达式如何使用。
- 只有2个值进行替换时,if表达式和case表达式都可以使用。
- 超过2个值的替换时,只能用case表达式
- 本题如果只是要求查询的话,使用select语句即可:
select (上面的case表达式) from 表名