Mysql - 如何在一段时间内查找重复记录

时间:2016-11-12 06:38:51

标签: mysql time count

我有这样的数据库结构:

id  ip       status  time
----------------------------------------
1   1.1.1.1  1       2016-11-11 21:37:04
2   8.8.8.8  1       2016-11-11 22:37:04
3   1.1.1.1  1       2016-11-11 21:38:04
4   8.8.8.8  0       2016-11-11 22:38:04
5   1.1.1.1  1       2016-11-11 21:39:04
6   8.8.8.8  0       2016-11-11 21:39:04
7   1.1.1.1  1       2016-11-11 21:40:04
8   8.8.8.8  1       2016-11-11 21:40:04
9   1.1.1.1  1       2016-11-11 21:41:04
10  8.8.8.8  1       2016-11-11 21:41:04
11  1.1.1.1  1       2016-11-11 21:42:04
12  8.8.8.8  0       2016-11-11 21:42:04
13  1.1.1.1  1       2016-11-11 21:43:04
14  8.8.8.8  1       2016-11-11 21:43:04

如何计算状态为0且两者之间差异为1分钟的记录?他们必须在彼此之后。

换句话说,如果我们有任意数量的记录具有相同的ip,彼此之后状态为0且时间戳差异为1分钟或更长,则将其添加到计数中。

会产生类似的结果:

ip       time                 count
------------------------------------
8.8.8.8  2016-11-11 22:38:04  1

Sql提供了一个测试答案:

http://www.sqlfiddle.com/#!2/b88d5d/1

感谢。

1 个答案:

答案 0 :(得分:-1)

从ip_check中选择ip,dt,count(id)作为cnt TIMESTAMPDIFF(MINUTE,dt,NOW())> 1 AND constexpr = 0 group by ip