我的表如下:
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.和long的最后3行。所有的lat.和long。这意味着机车在最后15分钟内静止不动,所以现在我可以将GPS追踪器置于睡眠模式15分钟,以节省电池。
2016-03-24场景12:00:
我现在在2016-03-24 11:56的15分钟后唤醒GPS追踪器。3行不同(id:41751417504179)
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行,因为位置已经更改。任何想法。提前谢谢。
这里有一个使用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;