Mysql 按照每天进行查询最近的数据
Posted 赵晓东-Nastu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mysql 按照每天进行查询最近的数据相关的知识,希望对你有一定的参考价值。
项目需求
现在有一个表device_status_info,在一个Device 在一天内不定时有多次插入记录,此表时M个设备,N天的记录。
解决方案
select d2.device_id,d2.time,d2.`status` from device_status_info d2
where (d2.device_id,d2.time) in
(select
d1.device_id,max(d1.time)
from
device_status_info d1
group by d1.device_id,DATE_FORMAT(d1.time,'%Y-%M-%D'))
也可以用内连接
select
d2.device_id,d2.`status`,d2.time
from
device_status_info d2
inner join
(
select
d1.device_id,max(d1.time) maxTime
from
device_status_info d1
group by d1.device_id,DATE_FORMAT(d1.time,'%Y-%M-%D')
) temp
where
d2.device_id = temp.device_id
and
d2.time = temp.maxTime
解析
我们要求每个设备在每天最后一个时间点的状态, 有两个条件,就是每个设备和每天,那么我们就可以将这两个作为分组的条件。
每天怎么表示呢?
我们用dateFormat(time,’%Y-%M-%D’),如果是每个月我们就可以去掉%D了。
同时我们也可以用笛卡尔积的形式,我觉得没必要。
以上是关于Mysql 按照每天进行查询最近的数据的主要内容,如果未能解决你的问题,请参考以下文章
mysql按照每天/每月等统计数据(连续不间断,当天/月没有数据为0)
mysql按照每天/每月等统计数据(连续不间断,当天/月没有数据为0)