mysql


1、if用法

select if(字段名 == 条件,满足时,不满足时) from table
select if(字段名 is null ,满足时,不满足时) from table

2、将某字段以逗号分隔并取前n个

select SUBSTRING_INDEX(字段名,‘,’,n) from table

3、将多行的值合并并以逗号分隔

select GROUP_CONCAT(SUBSTRING_INDEX(g.picture_url,‘,’,1) SEPARATOR ‘,’)

4、根据起止日期计算天数

select ABS(DATEDIFF(start_time,end_time)) + 1 AS cycle from table

5、按天分组统计,无数据显示0

首先准备一张表table(注意table中的数据一定要足够多,比如想要查一个月内的分组统计,table表中就一定要有30条记录),@cdate, INTERVAL - 1 DAY中的DAY可替换成MONTH和YEAR。
SELECT
@cdate := DATE_ADD( @cdate, INTERVAL - 1 DAY ) DAY
FROM
( SELECT @cdate := DATE_ADD( ‘2023-06-13’, INTERVAL + 1 DAY ) FROM table) t0
LIMIT 15;

之后进行关联查询
三个问号分别填入结束日期,查询的总天数,自定义查询条件
select count(b.id) count,DATE_FORMAT(a.upload_time, ‘%Y-%m-%d’) uploadTime from ( SELECT @cdate := DATE_ADD( @cdate, INTERVAL - 1 DAY ) upload_time FROM ( SELECT @cdate := DATE_ADD( ?, INTERVAL + 1 DAY ) FROM gas_upload_alarm_data_residents ) t0 LIMIT ?) a left join (select * from gas_upload_alarm_data_residents where device_id = ?) b on a.upload_time = DATE_FORMAT(b.upload_time, ‘%Y-%m-%d’) GROUP BY a.upload_time

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值