我的表格如下:
场景于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行,因为位置已更改。有任何想法吗。提前谢谢。
答案 0 :(得分:0)
以下是使用exists
和subquery
的解决方案。
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;