题目链接: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. Androidstudio 编译慢 这样的体验肯定很多人都有!!!

    本人也是经历过的   在老板站在你身后  说看下你做的东西怎么样啦   然后你开始编译你刚写代码     然后过了老长一段时间    你默默的拿起水来喝   缓解尴尬   boss一直站在后面   忍 ...

  2. Android 显示系统:OpenGL简介和Gralloc代码分析

    一.OpenGL ES与EGL Android的GUI系统是基于OpenGL/EGL来实现的. 由于OpenGL是通用函数库,在不同平台系统上需要被“本土化”——把它与具体平台的窗口系统建立起关联,F ...

  3. prometheus监控插件mysqld_exporter

    1,首先需要增加授权 mysql> GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO 'exporter'@'localhost' IDEN ...

  4. HAProxy+Keepalived 高可用负载均衡

    转自 https://www.jianshu.com/p/95cc6e875456 Keepalived+haproxy实现高可用负载均衡 Master backup vip(虚拟IP) 192.16 ...

  5. 人人都可以写的可视化Python小程序第二篇:旋转的烟花

    兴趣是最好的老师 枯燥的编程容易让人放弃,兴趣才是最好的老师.无论孩子还是大人,只有发现这件事情真的有趣,我们才会非常执着的去做这件事,比如打游戏.如果编程能像玩游戏一样变得有趣,我相信很多人就特别愿 ...

  6. LomBok插件--模型类注解

    Data注解,ToString注解都是Lombok提供的注解. Lombok是一个实用的java工具,使用它可以消除java代码的臃肿,Lombok提供一系列的注解,使用这些注解可 以不用定义gett ...

  7. 【log4j】的学习和理解 + 打印所有 SQL

    log4j 1.2 学习和理解 + 打印所有 SQL 一.基本资料 官方文档:http://logging.apache.org/log4j/1.2/manual.html(理解基本概念和其他) lo ...

  8. Spring A 标签链接使用

    1.示例 <a th:href="@{/edit/{id}(id=${user.id})}">修改</a> 以@开头前面的{id}是占位符,后面的(id=$ ...

  9. TP5 生成数据库字段 和 路由 缓存来提升性能

    关于使用tp5框架如何提升部分性能,框架中很多影响性能的问题在于,很多请求都要重新加载,如果能避免过度加载的问题,就能提升部分性能,所以我们通过缓存来实现这一功能,具体如下. 首先说明 如果是linu ...

  10. 前端入门系列之HTML

    前端入门系列之HTML 超文本标记语言 (英语:Hypertext Markup Language,简称:HTML ) 是一种用来结构化 Web 网页及其内容的标记语言.网页内容可以是:一组段落.一个 ...