描述:
给定一个 salary表,如下所示,有m=男性 和 f=女性的值 。交换所有的 f 和 m 值(例如,将所有 f 值更改为 m,反之亦然)。要求使用一个更新查询,并且没有中间临时表。

先给出答案:

#第一种方法if
update salary set sex= if(sex='m','f','m');
#第二种方法
update salary set sex = case when sex='m' then 'f' else 'm' end;

IF表达式
IF(expr1,expr2,expr3)
如果 expr1 是TRUE ,则 IF()的返回值为expr2; 否则返回值则为 expr3。IF() 的返回值为数字值或字符串值,具体情况视其所在语境而定。这个类似于Java中的 ?:双目运算符

以上面的为例,update salary set sex= if(sex='m','f','m');
sex='m'时,返回'f'。反之返回'm'

case when表达式
case具有两种格式。简单case函数和case搜索函数。

--简单case函数
case sex
  when '1' then '男'
  when '2' then '女’
  else '其他' end
--case搜索函数
case when sex = '1' then '男'
     when sex = '2' then '女'
     else '其他' end