列表

详情


627. 变更性别

Salary 表:

+-------------+----------+
| Column Name | Type     |
+-------------+----------+
| id          | int      |
| name        | varchar  |
| sex         | ENUM     |
| salary      | int      |
+-------------+----------+
id 是这个表的主键。
sex 这一列的值是 ENUM 类型,只能从 ('m', 'f') 中取。
本表包含公司雇员的信息。

 

请你编写一个 SQL 查询来交换所有的 'f''m' (即,将所有 'f' 变为 'm' ,反之亦然),仅使用 单个 update 语句 ,且不产生中间临时表。

注意,你必须仅使用一条 update 语句,且 不能 使用 select 语句。

查询结果如下例所示。

 

示例 1:

输入:
Salary 表:
+----+------+-----+--------+
| 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    |
+----+------+-----+--------+
解释:
(1, A) 和 (3, C) 从 'm' 变为 'f' 。
(2, B) 和 (4, D) 从 'f' 变为 'm' 。

原站题解

去查看

上次编辑到这里,代码来自缓存 点击恢复默认模板
# Write your MySQL query statement below

pythondata 解法, 执行用时: 240 ms, 内存消耗: 59.1 MB, 提交时间: 2023-09-17 10:44:13

import pandas as pd

def swap_salary(salary: pd.DataFrame) -> pd.DataFrame:
    salary["sex"] = salary["sex"].map({"f":"m","m":"f"})
    return salary
    
def swap_salary2(salary: pd.DataFrame) -> pd.DataFrame:
    import numpy as np
    salary['sex'] = np.where(salary['sex']=='m','f','m')
    return salary

mysql 解法, 执行用时: 245 ms, 内存消耗: 0 B, 提交时间: 2022-05-30 10:19:21

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

mysql 解法, 执行用时: 278 ms, 内存消耗: 0 B, 提交时间: 2022-05-30 10:18:49

update salary set sex = char(ascii('m') + ascii('f') - ascii(sex));

mysql 解法, 执行用时: 1004 ms, 内存消耗: N/A, 提交时间: 2018-08-22 11:00:08

# Write your MySQL query statement below


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

上一题