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 查询时 按照某个字段计算后的值 排序?

mysql按照每天/每月等统计数据(连续不间断,当天/月没有数据为0)

mysql按照每天/每月等统计数据(连续不间断,当天/月没有数据为0)

MySQL - 如何自动化视图查询,从最近的日期减去前一天的指标和日期戳最近的数据

Mysql 上亿级数据导入Hive思路分享

mysql查询某段时间段中每一天的数据