LeetCode Database 627 交换工资

1. 题目描述

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

请注意,你必须编写一个 Update 语句,不要编写任何 Select 语句。

例如:

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

运行你所编写的更新语句之后,将会得到以下表:

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

2. 题解

2.1. MySQL(IF函数)

IF(expr,v1,v2) 如果表达式 expr 成立,返回结果 v1;否则,返回结果 v2。

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

2.2. MySQL(CASE语句)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
-- 形式1
UPDATE salary
SET sex =
CASE
WHEN sex = 'm' THEN 'f'
ELSE 'm'
END

-- 形式2
UPDATE salary
SET sex =
CASE sex
WHEN 'm' THEN 'f'
ELSE 'm'
END
panchaoxin wechat
关注我的公众号
支持一下