第二题:Swap Salary

https://leetcode.com/problems/swap-salary/description/

| id | name | sex | salary |
|----|------|-----|--------|
| 1  | A    | m   | 2500   |
| 2  | B    | f   | 1500   |
| 3  | C    | m   | 5500   |
| 4  | D    | f   | 500    |

只用一个 SQL 查询,将 sex 字段反转。

| id | name | sex | salary |
|----|------|-----|--------|
| 1  | A    | f   | 2500   |
| 2  | B    | m   | 1500   |
| 3  | C    | f   | 5500   |
| 4  | D    | m   | 500    |

首先,我想先总结一下在mysql中 if 和 case 语句的使用

IF表达式

IF(expr1,expr2,expr3)

如果 expr1 是TRUE,则 IF()的返回值为expr2; 否则返回值则为 expr3。IF() 的返回值为数字值或字符串值,具体情况视其所在语境而定。

CASE WHEN 表达式

case                                -------------如果
    when sex='1' then '男' -------------sex='1',则返回值'男'
    when sex='2' then '女' -------------sex='2',则返回值'女'  
    else 0                          -------------其他的返回0
    end                              -------------结束

所以该题的解题为:

UPDATE salary
SET sex = CASE 
          WHEN sex = 'f' THEN 'm'
          ELSE 'f'
          END;

也可以用IF判断

UPDATE salary
SET sex = IF(sex = 'm','f','m');

猜你喜欢

转载自www.cnblogs.com/xlzfdddd/p/10425460.html