php mysql只选择最后3行,如果它们相似并且提前15分钟更新

时间:2016-03-24 07:14:30

标签: php mysql gps

我的表格如下:

场景于2016-03-24 11:41:
我每隔5分钟从GPS跟踪器接收短信并插入数据库。挑战是根据查询结果发出命令以唤醒并进入睡眠模式GPS跟踪器。   

id   |   snd_sms_time   |    lat  |   lng  
41750|2016-03-24 11:40:0|26.215363|84.888593   
41749|2016-03-24 11:35:0|26.215363|84.888593  
41748|2016-03-24 11:30:0|26.215363|84.888593     
41747|2016-03-24 11:25:0|26.215363|84.888593 

mysql查询应返回具有相同lat的最后3行。而且很长。所有的拉特。而且很长。相似它意味着火车车厢在最后15分钟内静止不动,现在我可以将GPS追踪器置于睡眠模式,时间间隔为15分钟,以节省电量。

现场2016-03-24 12:00:

我现在在2016-03-24 11:56之后15分钟后唤醒了GPS跟踪器。(我已经在晚上11点41分将GPS跟踪器置于睡眠模式)。而且很长。对于3行(id:41751,41750,41749)而言是不同的

 id  |   snd_sms_time   |    lat  |   lng  
41751|2016-03-24 11:59:0|26.215370|84.888593   
41750|2016-03-24 11:40:0|26.215363|84.888593  
41749|2016-03-24 11:35:0|26.215363|84.888593     
41748|2016-03-24 11:30:0|26.215363|84.888593  

现在查询应返回0行,因为位置已更改。有任何想法吗。提前谢谢。

1 个答案:

答案 0 :(得分:0)

以下是使用existssubquery的解决方案。

select * from message 
where exists(
    select 1 
    from (select * from message order by snd_sms_time DESC limit 3) t 
    group by lat,lng 
    having count(*) = 3
    )
order by snd_sms_time DESC limit 3;