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');