写点什么

数据库每日一题 --- 第 5 天:变更性别

作者:知心宝贝
  • 2022 年 6 月 07 日
  • 本文字数:897 字

    阅读完需:约 3 分钟

数据库每日一题---第5天:变更性别

一、问题描述

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 语句。


题目链接:变更性别

二、题目要求

样例

输入: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) sex 从 'm' 变为 'f' 。(2, B) 和 (4, D) sex 从 'f' 变为 'm' 。
复制代码

考察

1.IF判断、CASE语句2.建议用时10~25min
复制代码

三、问题分析

1. IF 判断

我们可以直接使用if(sex='m','f','m') 三元表达式,就是说如果sex等于m,那么返回f,否则返回m


对于if判断返回的结果直接用,update 中的set更新一下对应的性别符号就可以了。

2. CASE 语句

对于这一题我们还可以选择


case  ...     when ... then...    when ... then...end
复制代码


这样的 case 语句进行判断,我们只需要当性别sex等于m对应f字符,性别sex等于f对应m字符,最后加上一个结束符号end就可以了。

四、编码实现

1. IF 判断

select c.Name as 'Customers'from Customers as cwhere c.Id not in( select CustomerId from Orders)
复制代码

2. CASE

update Salaryset sex=(case sex when 'm' then 'f' when 'f' then 'm' end)
复制代码

五、测试结果




发布于: 刚刚阅读数: 5
用户头像

知心宝贝

关注

公众号:穿越计算机的迷雾 2022.03.07 加入

生于尘埃 溺于人海 死于理想高台

评论

发布
暂无评论
数据库每日一题---第5天:变更性别_数据库_知心宝贝_InfoQ写作社区