msql if和case

if:

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

运行结果是更新sex,如果sex为m更新为f,否则更新为m

case:

UPDATE salary SET sex  = (CASE WHEN sex = 'm' THEN 'f' ELSE 'm' END)

结果和上面的if语句一样

主要是leetcode里面一道题要求只用一次更新语句并且没有中间临时表来实现替换表中的性别字段,自己琢磨了半天只能实现一次更新,不能不用中间临时表,就只好百度了下答案,谁知这么简单,故在此记录一下新学到的两句语句,顺便下面是我自己写的错误的sql语句:

update salary t4 INNER JOIN (
SELECT t2.id,t2.name,t1.sex,t2.salary from (
(select * from salary ORDER BY sex asc) t1
INNER JOIN
(select * from salary order by sex desc) t2
on t1.sex!=t2.sex
)GROUP BY id
)t3
on t4.id=t3.id
set t4.sex=t3.sex ;

虽然这个方法是错的,但里面也包含了我新学的把更新和查询结合起来的一种方法:

update a INNER JOIN (select * from  b)c on a.id=c.id set a.sex=c.sex;
括号内的select可以随意拼接查询直到得到你需要的值,然后通过on判断要改的元素
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值