【Mysql】日期、行变列(IF、CASE WHEN THEN)语句总结

  1. 获取昨天的日期
    日期相减函数 datediff
select datediff(curdate(),INTERVAL 1 DAY) ;
  1. 删除Person表中重复的Email数据,只保留id最小的一条
delete p1 from Person p1,Person p2 where p1.Email = p2.Email and p1.Id > p2.Id;
  1. 换座位,1与2换,3与4换,5保留原来的
    COALESCE空值表达式,第一个不为空,返回第一个结束;否则继续判断接下来的数据;
select id, COALESCE(s2.student,s1.student) from seat s1, LEFT JOIN
    seat s2 ON ((s1.id + 1) ^ 1) - 1 = s2.id
ORDER BY s1.id;
  1. 交换性别,‘f’ 变 ‘m’, ‘m’ 变 ‘f’
update salary set sex= 
   case sex when 'f' then 'm' 
       else 'f'
       END;
  1. 月份列变行,求总和,并汇总
    if(month=‘Jan’,revenue,null) Jan_Revenue
    case month when ‘Jan’ then revenue END Jan_Revenue
select id,
sum(if(month='Jan',revenue,null)) Jan_Revenue,
sum(if(month='Feb',revenue,null)) Feb_Revenue,
sum(if(month='Mar',revenue,null)) Mar_Revenue,
sum(if(month='Apr',revenue,null)) Apr_Revenue,
sum(if(month='May',revenue,null)) May_Revenue,
sum(if(month='Jun',revenue,null)) Jun_Revenue,
sum(if(month='Jul',revenue,null)) Jul_Revenue,
sum(if(month='Aug',revenue,null)) Aug_Revenue,
sum(if(month='Sep',revenue,null)) Sep_Revenue,
sum(if(month='Oct',revenue,null)) Oct_Revenue,
sum(if(month='Nov',revenue,null)) Nov_Revenue,
sum(if(month='Dec',revenue,null)) Dec_Revenue from Department group by id;

select id,
sum(case month when 'Jan' then revenue END) Jan_Revenue,
sum(case month when 'Feb' then revenue END) Feb_Revenue,
sum(case month when 'Mar' then revenue END) Mar_Revenue,
sum(if(month='Apr',revenue,null)) Apr_Revenue,
sum(if(month='May',revenue,null)) May_Revenue,
sum(if(month='Jun',revenue,null)) Jun_Revenue,
sum(if(month='Jul',revenue,null)) Jul_Revenue,
sum(if(month='Aug',revenue,null)) Aug_Revenue,
sum(if(month='Sep',revenue,null)) Sep_Revenue,
sum(if(month='Oct',revenue,null)) Oct_Revenue,
sum(if(month='Nov',revenue,null)) Nov_Revenue,
sum(if(month='Dec',revenue,null)) Dec_Revenue from Department group by id;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序媛一枚~

您的鼓励是我创作的最大动力。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值