题目链接:https://leetcode-cn.com/problems/swap-salary/

题目

给定一个 salary 表,如下所示,有 m = 男性f = 女性 的值。交换所有的 fm 值(例如,将所有 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

来源:力扣(LeetCode)

链接:https://leetcode-cn.com/problems/swap-salary

著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

解答

虽然不知道为什么这么写。。但自己写的。。居然通过了。。

---- MySQL ----
# Write your MySQL query statement below
update salary set sex =
case when sex = 'm' then 'f'
when sex = 'f' then 'm' end ---- 119ms

Oracle提交也可以通过,不过执行很慢,1151ms。

看到一个神操作,通过ascii码转换,再通过char转换为字符串,666!

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

还有通过异或运算得到结果的。

---- MySQL ----
update salary set sex =
char(ascii(sex)^ascii('f')^ascii('m')); ---- 120ms

异或运算:当2个相同的值进行异或运算,结果为0。

使用MySQLif函数,if(sex = 'm', 'f', 'm')也可以。

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

使用oracledecode函数。

---- oracle ----
update salary set sex =
decode(sex, 'm', 'f', 'f', 'm');

思考

使用updatecase...when...进行动态将值设置成列。

通过ascii码转换,再通过char转换为字符串。

使用异或运算进行解答。

使用常规的ifdecode进行解答。

LeetCode:627.交换工资的更多相关文章

  1. SQL语句中IF的简单使用 - 关联leetcode 627.交换工资

    MySQL的IF既可以作为表达式用,也可在存储过程中作为流程控制语句使用,如下是做为表达式使用: IF表达式 IF(expr1,expr2,expr3) 如果 expr1 是TRUE (expr1 & ...

  2. [LeetCode] 627.交换性别

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

  3. case when then的用法-leetcode交换工资

    case具有两种格式:简单case函数和case搜索函数. --简单case函数 case sex when ' then '男' when ' then '女’ else '其他' end --ca ...

  4. LeetCode 627. Swap Salary (交换工资)

    题目标签: 题目给了我们一个 工资表格,让我们把 男女性别对换. 这里可以利用IF, IF(condition, value_if_true, value_if_false). Java Soluti ...

  5. LeetCode刷题(数据库)---- 交换工资

    题:给定一个工资表,如下所示,m=男性 和 f=女性 .交换所有的 f 和 m 值(例如,将所有 f 值更改为 m,反之亦然).要求使用一个更新查询,并且没有中间临时表. 例如: | id | nam ...

  6. “全排列”问题系列(一)[LeetCode] - 用交换元素法生成全排列及其应用,例题: Permutations I 和 II, N-Queens I 和 II,数独问题

    转:http://www.cnblogs.com/felixfang/p/3705754.html 一.开篇 Permutation,排列问题.这篇博文以几道LeetCode的题目和引用剑指offer ...

  7. [SQL]LeetCode627. 交换工资 | Swap Salary

    SQL架构 create table ), sex ), salary int) Truncate table salary insert into salary (id, name, sex, sa ...

  8. leetcode 184 部门工资最高的员工

    题目描述:Employee 表包含所有员工信息,每个员工有其对应的 Id, salary 和 department Id. Department 表包含公司所有部门的信息. 编写一个 SQL 查询,找 ...

  9. leetcode 627. Swap Salary 数据库带判断的更新操作

    https://leetcode.com/problems/swap-salary/description/ 用  set keyWord = Case depentedWord when haha ...

随机推荐

  1. 2.5 Go语言基础之map

    Go语言中提供的映射关系容器为map, Go中内置类型,其内部使用散列表(hash)实现,为引用类型. 无序键值对(key-value)集合,通过key(类似索引)快速检索数据 必须初始化才能使用. ...

  2. Swift 循环

    循环类型 Swift 语言提供了以下几种循环类型.点击链接查看每个类型的详细描述: 循环类型 描述 for-in 遍历一个集合里面的所有元素,例如由数字表示的区间.数组中的元素.字符串中的字符. fo ...

  3. 阶段5 3.微服务项目【学成在线】_day04 页面静态化_08-freemarker基础-空值处理

    把stus注释掉 正常访问就会报错 第20行 这里的stus为空,所以造成了这个错误. 非空判断 不为空用双问号来判断 <#if stus??><#list stus as stu& ...

  4. Anaconda3详细安装使用教程及问题总结

    1.Anaconda是什么? 简单来说,Anaconda是Python的包管理器和环境管理器. 先来解决一个初学者都会问的问题:我已经安装了Python,那么为什么还需要Anaconda呢?原因有以下 ...

  5. maven-mybatis代码生成

    1.创建测试工程 选择maven Project 点击next 填写项目名称 点击 finish 项目创建完成 2.pom.xml <project xmlns="http://mav ...

  6. Gogs 设置Git钩子实现项目自动部署

    每次修改代码需要上传到 git仓库,查看了一下 Gogs 使用文档 发现有 web钩子 这个选项,然后发现了本地可实现的 Git钩子. 注意:需要用到管理员帐号登录,进行仓库的设置. 有三种状态分别是 ...

  7. javaweb期末项目-stage3-项目测试和发布

    项目综合报告.项目测试.项目部署 .rar---下载 说明:解压密码为袁老师的全名拼音(全小写) 相关链接: 项目结构:https://www.cnblogs.com/formyfish/p/1082 ...

  8. Spring 视图层如何显示验证消息提示

    1.示例 <p th:if="${#fields.hasErrors('name')}" th:errors="*{name}" ></p&g ...

  9. poj2826(细节,计算几何)

    题目链接:https://vjudge.net/problem/POJ-2826 题意:平面中摆两根木棍,雨水从上垂直下落,问木棍中能乘多少水. 思路: 细节很多,坑QAQ.. 首先不相交时肯定为0. ...

  10. SpringBoot 对IBM MQ进行数据监听接收以及数据发送

    一.需求介绍 后端使用Spring Boot2.0框架,要实现IBM MQ的实时数据JMS监听接收处理,并形成回执通过MQ队列发送. 二.引入依赖jar包 <dependency> < ...