MySQL变更性别

Posted willem_chen

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL变更性别相关的知识,希望对你有一定的参考价值。

SQL

create table if not exists salary(id int, name varchar(100), sex char(1), salary int)
Truncate table salary

insert into salary (id, name, sex, salary) values ('1', 'A', 'm', '2500')
insert into salary (id, name, sex, salary) values ('2', 'B', 'f', '1500')
insert into salary (id, name, sex, salary) values ('3', 'C', 'm', '5500')
insert into salary (id, name, sex, salary) values ('4', 'D', 'f', '500')

题目描述

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

注意,您必只能写一个 Update 语句,请不要编写任何 Select 语句。

例如:

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

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

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

题解

方法:使用 UPDATE 和 CASE…WHEN
算法

要想动态地将值设置成列,我们可以在使用 CASE…WHEN… 流程控制语句的同时使用 UPDATE 语句。

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

用例二

update salary set sex=if(sex="m","f","m");

以上是关于MySQL变更性别的主要内容,如果未能解决你的问题,请参考以下文章

力扣627(MySQL)-变更性别(简单)

LeetCode(数据库)- 变更性别

mysql中的case when then 的用法

文巾解题 627. 变更性别

627. 变更性别

627. 变更性别