题目链接: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. Redis有序Set、无序Set的使用经历

    为了实现一个类似关系数据库中的卖家信息的单表,首先我们知道单表必然可增删查改,其次为了区分先来后到又需要有ID主键且自增长.开始考虑使用hash数据类型,因为hash是key+列1.列2...这样一来 ...

  2. 模型压缩-ThiNet

    转载:https://blog.csdn.net/u014380165/article/details/77763037 https://www.twblogs.net/a/5b8d02472b717 ...

  3. 利用subst命令将一个文件夹镜像成本地的一个磁盘

    企业里都是只有一个c盘,因为这样安全性好,性能也好 那么有时候,我们是需要其他的系统盘来做一些事情的,比如远程的时候需要带过去一个系统盘,这个时候,就可以用subset这个命令来解决这个问题. 叫镜像 ...

  4. Apache实现一台服务器上运行多个网站

    总共有三种方法:通过不同的IP地址 通过不同的域名 通过不同的端口号 (1).通过不同的IP地址实现 例如一台CentOS7有两个IP:192.168.5.101和192.168.5.103 [roo ...

  5. Python实现的选择排序算法原理与用法实例分析

    Python实现的选择排序算法原理与用法实例分析 这篇文章主要介绍了Python实现的选择排序算法,简单描述了选择排序的原理,并结合实例形式分析了Python实现与应用选择排序的具体操作技巧,需要的朋 ...

  6. oracle自增主键

    本文参考-https://www.cnblogs.com/xxaxx/p/3584036.html oracle没有像sqlserver中identity一样的函数,需要依赖于序列.触发器来实现自增主 ...

  7. SIFT学习笔记之二 特征提取

    特征提取函数: int _sift_features( IplImage* img, struct feature** feat, int intvls, double sigma, double c ...

  8. 利用css 画各种三角形

      #triangle-up {    width: 0;    height: 0;    border-left: 50px solid transparent;    border-right: ...

  9. [转帖]2019-03-26 发布 深入理解 MySQL ——锁、事务与并发控制

    深入理解 MySQL ——锁.事务与并发控制 https://segmentfault.com/a/1190000018658828 太长了 没看完.. 数据库 并发  mysql 639 次阅读   ...

  10. [github] 关于华为鸿蒙OS

    English Docs | 中文文档 | Türkçe Dökümanlar HarmonyOS Ⅰ. 鸿蒙系统简介 鸿蒙系统(HarmonyOS),是第一款基于微内核的全场景分布式OS,是华为自主 ...