描述:
 给定一个 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

京公网安备 11010502036488号